|
Archives of the TeradataForumMessage Posted: Thu, 25 Dec 2003 @ 15:44:59 GMT
Hi, guys, I come across an error when I call one of my stored procedure. Teradata versiion is V2R5.0 for Windows, but the SP is called correctly when teradata is insatlled under UNIX platform. To test what's wrong, I write two SP, the two SP's function is same, but result is different, my teradata server's OS is Windows 2000. First Procedure: REPLACE PROCEDURE sp_test1 (IN chM1YMD CHAR(8)) BEGIN DECLARE dateM1,dateM2 DATE; DECLARE chM2YM CHAR(6); SET dateM1=CAST(chM1YMD AS DATE FORMAT 'YYYYMMDD'); SET dateM2=ADD_MONTHS(dateM1,-1); SET chM2YM = SUBSTRING( CAST(CAST(dateM2 AS FORMAT 'YYYYMMDD') AS char(8)) FROM 1 FOR 6); END call sp_test1('20030901'); The result message is Code = 2665. 2665: sp_test:Invalid date.d transaction ABORT. Second Procedure: REPLACE PROCEDURE sp_test2 (IN chM1YMD CHAR(8)) BEGIN DECLARE chM2YM CHAR(6); SET chM2YM = SUBSTR( CAST( CAST( ADD_MONTHS(CAST(chM1YMD AS DATE FORMAT 'YYYYMMDD'),-1) AS FORMAT 'YYYYMMDD') AS char(8)), 1, 6); PRINT chM2YM; END call sp_test2('20030901'); It run correctly and the print information 200308 which is what I want. I use Teradata SQL Assistant v6. I also checked my ODBC configuration, the session mode is Teradata, datetime format is AAA, that is, date, time and timestamp format are both ANSI. If I change datetime format to III, that is, date, time and timestamp format are both integer. I got the same results. Who can tell me what's wrong? Many thanks. Zheng Hongxia
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||