DDS时间与DDL时间

时间:2011-10-20 17:21:08

标签: c# datetime time db2 ibm-midrange

我正在处理一个问题。我有一个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.SupervisorSignedDateTimetransactions.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', ...)

1 个答案:

答案 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");