2016-07-28 76 views
0

DB2 z/OS的版10更新YEAR上日期字段

对于表中的一列DATE我想的DATE的YEAR部分更新到1900。例如,更新1981-09-031900-09-03

我已经尝试使用以下:

UPDATE SERDB.S16_WEB_USERS_T 
     SET YEAR(S16_BIRTH_DT) = '1900' 
    WHERE YEAR(S16_BIRTH_DT) > '0'; 

我收到以下错误:

ILLEGAL SYMBOL "(". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: = .. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.67.27 SQL Code: -104, SQL State: 42601

有没有人有什么建议?谢谢。

回答

1

AFAIK,您不能使用YEAR()在任何平台或DB2版本的日期字段中设置值。

将不得不做一些数学

UPDATE SERDB.S16_WEB_USERS_T 
     SET S16_BIRTH_DT = S16_BIRTH_DT - (YEAR(S16_BIRTH_DT) - 1900) YEARS 
    WHERE YEAR(S16_BIRTH_DT) > '0'; 

但我怀疑你为什么要这么做。特别是与WHERE YEAR(S16_BIRTH_DT) > '0'

还要注意的是,如果生日是2月29日,该日期将变更为2月28日1900年

+0

的太感谢你了! – scddsn

+0

@scddsn,请将答案标记为已接受。 – Charles