我正在处理一个问题。我有一个C#.NET应用程序正在将数据上传到i。在一个应用程序中,我将文件定义为具有时间字段的DDS(旧习惯不会死亡)。在这个新的应用程序中,我使用DDL来创建文件,它还有一个时间字段。我基本上已经将工作应用程序中的行复制并粘贴到新应用程序中,但仍然无效。我能看到的唯一区别是DDS与DDL。是否有人能够确认存在某种差异(即使我不知道为什么会出现这种情况)?
DDL:
CREATE TABLE EGOVLOG.TRANYYMMDD (
...
PAYMENTDATE FOR COLUMN PAYDATE DATE NOT NULL DEFAULT CURRENT_DATE ,
PAYMENTTIME FOR COLUMN PAYTIME TIME NOT NULL DEFAULT CURRENT_TIME ,
...
PRIMARY KEY( ID ))
RCDFMT TRANYYMMDD;
DDS:
A RSSIGNDATE L ALIAS(SUPERVISOR_SIGNED_DATE)
A COLHDG('SUPERVISOR' 'SIGNED DATE')
A TEXT('SUPERVISOR SIGNED DATE')
A RSSIGNTIME T ALIAS(SUPERVISOR_SIGNED_TIME)
A COLHDG('SUPERVISOR' 'SIGNED TIME')
A TEXT('SUPERVISOR SIGNED TIME')
工作线:
// Outputs "15.21.47"
cmd.Parameters.Add("@SUPERVISOR_SIGNED_TIME", iDB2DbType.iDB2Time).Value =
leaveRequest.SupervisorSignedDateTime.ToString("HH.mm.ss");
非工作线:
// Outputs "15.21.47"
cmd.Parameters.Add("@PAYMENTTIME", iDB2DbType.iDB2Time).Value =
transactions.Transaction.TransactionTimestamp.ToString("HH.mm.ss");
leaveRequest.SupervisorSignedDateTime
和transactions.Transaction.TransactionTimestamp
都属于同一个C#类型(DateTime
)。
错误是:
IBM.Data.DB2.iSeries.iDB2ConversionException未处理
消息=发生转换错误。
源= IBM.Data.DB2.iSeries
MessageCode = 111
MessageDetails =参数:13。
更新:为了添加神秘感,我手动运行了插件,这可行。
INSERT INTO TABLE VALUES(...'10/19/2011', '15:21:47', ...)
答案 0 :(得分:3)
问题是我的参数顺序和/或日期格式。
我还将上面提到的代码更改为:
cmd.Parameters.Add("@PAYMENTDATE", iDB2DbType.iDB2Date).Value = transactions.Transaction.TransactionTimestamp.ToString("yyyy-MM-dd");
cmd.Parameters.Add("@PAYMENTTIME", iDB2DbType.iDB2Time).Value = transactions.Transaction.TransactionTimestamp.ToString("HH.mm.ss");