与IBM数据服务器客户机日期时间字段溢出v9.7fp5
使用的EntityFramework V4.1和IBM数据服务器客户机v9.7fp5
,DB基于具有DATE列预先定义的DB2表第一生成代码。在DB2 DATE列的代码生成期间映射到.NET DateTime数据类型。与IBM数据服务器客户机日期时间字段溢出v9.7fp5
当试图INSERT
一排,收到以下错误
ERROR [22008] [IBM] CLI0114E日期时间字段溢出。 SQLSTATE = 22008
这很有意义,因为.NET没有DATE数据类型,只是DATETIME,并且该属性会有更多的数据,然后DB2 DATE列会预期。
的问题是
为什么不.NET基础代码自动转换使用ToShortDateString(),并提供DB2什么期待?
可以使用什么方法来覆盖.NET基础逻辑和在应用程序代码转换值.NET提交SQL事务DB2之前?
任何帮助或反馈将不胜感激。谢谢!
阅读datetime Data Type Conversions (ODBC)。它定义了datatype conversions
各种规则。一个在下面列出 - SQLSTATE 22008.
如果由C转换为SQL时出现的秒或秒的小数部分截断,与SQLSTATE 22008和消息“日期时间字段溢出”而生成的诊断记录。
这里的关键点是要确保没有发生在几秒钟内没有truncation
/秒的小数部分
DATE数据类型
如果DB2数据库列是DATE
数据类型,创建变量作为上市如下:
new DateTime(2012,3,4); //No time part
TIMESTAMP DataType
如果DB2数据库列是TIMESTAMP
数据类型,除去毫秒分数:
dateTime = new DateTime(dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond),dateTime.Kind);
参考:
DB2 INSERT于DATE和TIMESTAMP
如果您在DB2直接的SQL语句插入,
对于timestamp使用的格式,如 '2012-12-17-16.53.57.285754'
和
为DATE使用格式如CAST('2012-12-10'AS DATE)
这节省了我们,谢谢!在我们插入任何具有'DATE'类型的列之前,我们只需调用'OurDateValue.Date'并且一切顺利。辉煌,即使有点傻。 – 2013-03-14 16:12:33