2011-10-20 2 views
1

여기에서 문제를 해결하려고합니다. 나는에 데이터를 업로드하는 C# .NET 응용 프로그램이 있습니다. 한 응용 프로그램에서 DDS (오래된 습관은 죽지 않는다)로 정의 된 파일을 시간 필드와 함께 가지고 있습니다. 이 새로운 응용 프로그램에서는 DDL을 사용하여 파일을 만들고 시간 필드도 있습니다. 기본적으로 작업 응용 프로그램의 행을 복사하여 새 응용 프로그램에 붙여 넣었지만 여전히 작동하지 않습니다. 내가 볼 수있는 유일한 차이점은 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', ...) 
+0

은'TransactionTimestamp' 실제로'DateTime' 경우, 혹은 'TIMESTAMP' 필드 (즉, 열 기반 버전 ID)이다

는 I은 또한 위에서 언급 코드를 변경? – Yuck

+0

호출하는 저장 프로 시저에서 SUPERVISOR_SIGNED_TIME과 PAYMENTTIME이 정확히 동일한 데이터 유형입니까? – NotMe

+0

@Yuck 나를 위해 나쁜 이름을 선택했습니다 ...'TransactionTimestamp'는'DateTime'입니다. –

답변

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"); 
+3

답을 편집하여 '날짜'매개 변수를 먼저 지정하고 '시간'을 지정해야한다는 점을보다 명확하게 이해하십시오. 가능하다면 (그리고 존재할 경우),이 문제에 대한 매뉴얼에서 참고 자료를 찾을 수 있다면 더 나은 대답이 될 것입니다. 아마도이 문제는 C# _library_ 문제 인 것 같고 DB2 문제가 직접적으로 제기 된 것은 아닙니다. –