Mic*_*art 2 .net db2 datetime odbc
使用EntityFramework v4.1和IBM Data Server Client v9.7fp5,DB首先基于具有DATE列的预定义DB2表生成代码.在代码生成期间,DB2 DATE列将映射到.NET DateTime数据类型.
尝试INSERT连续时,收到以下错误
错误[22008] [IBM] CLI0114E日期时间字段溢出.SQLSTATE = 22008
这是有道理的,因为.NET没有DATE数据类型,只有DATETIME和那个属性会有更多的数据,那么DB2 DATE列会期望.
问题是
为什么.NET基本代码不能使用ToShortDateString()自动转换并提供DB2期望的内容?
在.NET将SQL事务提交给DB2之前,可以使用哪些方法覆盖.NET基本逻辑并在应用程序代码中转换值?
任何帮助或反馈将不胜感激.谢谢!
读取datetime数据类型转换(ODBC).它定义了各种规则datatype conversions.下面列出了一个 - SQLSTATE 22008.
如果在从C转换为SQL时发生截断秒或小数秒,则会使用SQLSTATE 22008和消息"Datetime field overflow"生成诊断记录.
这里的关键是确保truncation在秒/小秒内没有发生
DATE数据类型
如果DB2数据库列是DATE数据类型,请创建您的变量,如下所示:
new DateTime(2012,3,4); //No time part
Run Code Online (Sandbox Code Playgroud)
TIMESTAMP数据类型
如果DB2数据库列是TIMESTAMP数据类型,则删除几毫秒:
dateTime = new DateTime(dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond),dateTime.Kind);
Run Code Online (Sandbox Code Playgroud)
参考:
DB2 INSERT for DATE和TIMESTAMP
如果在DB2中插入直接SQL语句,
对于TimeStamp使用格式如'2012-12-17-16.53.57.285754'
和
对于DATE使用格式如CAST('2012-12-10'AS DATE)