更新 DATE 字段上的 YEAR

Update the YEAR on a DATE field

DB2 z/OS 版本 10

对于 table 中的 DATE 列,我想将 DATE 的 YEAR 部分更新为 1900。例如,将 1981-09-03 更新为 1900-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

有人有什么建议吗?谢谢你。

据我所知,您不能使用 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 日,则日期将更改为 1900 年 2 月 28 日。