【发布时间】:2011-03-29 17:21:22
【问题描述】:
我正在尝试创建一个带有日期列的 db2 表,其中默认值是上个月的最后一天。在创建表语句中,我将列定义为:
"CLOSE_DATE" DATE NOT NULL WITH DEFAULT DATE(CURRENT_DATE - DAY(CURRENT_DATE) DAYS),
但我收到一个错误:
SQL0104N 意外标记“- DAY(CURRENT_DATE) DAYS" 被发现 在“LT DATE(CURRENT_DATE”之后)。 预期的令牌可能包括: “”。 SQLSTATE=42601
这是不允许的,还是我有一些语法错误?
更新 - 我用过:
CREATE TRIGGER TRIGGER_NAME AFTER INSERT ON SCH.TABLE FOR EACH ROW
UPDATE SCH.TABLE SET CLOSE_DATE = DATE(CURRENT_DATE - DAY(CURRENT_DATE) DAYS)
效果很好。如果有人知道更简洁的语法,请随时发表评论。
【问题讨论】:
-
我意识到这是一个旧的(呃)帖子,但我想我会指出(至少在 LUW 9.7 中),有一个
LAST_DAY函数将给出最后一天基于日期表达式的月份(例如,LAST_DAY(CURRENT_DATE))不幸的是,DEFAULTs 仍然不允许除内置转换函数之外的任何函数(请参阅SQLCODE -574上的原因代码 7)。
标签: db2