【问题标题】:Update the YEAR on a DATE field更新日期字段的年份
【发布时间】:2016-07-28 14:27:56
【问题描述】:

DB2 z/OS 版本 10

对于表中的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';

我收到以下错误:

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

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

【问题讨论】:

    标签: date db2 zos db2-zos


    【解决方案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 日。

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多