0

DB2 z/OS 版本 10

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

我尝试使用以下内容:

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

我收到以下错误:

非法符号“(”。一些可能合法的符号是:= .. SQLCODE=-104,SQLSTATE=42601,DRIVER=3.67.27 SQL 代码:-104,SQL 状态:42601

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

4

1 回答 1

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 日,则日期将更改为 1900 年 2 月 28 日。

于 2016-07-28T15:02:21.763 回答