gpt4 book ai didi

DB2 日期列默认为上个月的最后一天?

转载 作者:行者123 更新时间:2023-12-04 06:30:32 26 4
gpt4 key购买 nike

我正在尝试创建一个带有日期列的 db2 表,其中默认值是上个月的最后一天。在 create table 语句中,我将列定义为:

"CLOSE_DATE" DATE NOT NULL WITH DEFAULT DATE(CURRENT_DATE - DAY(CURRENT_DATE) DAYS),

但我收到一个错误:

SQL0104N An unexpected token "- DAY(CURRENT_DATE) DAYS" was found following "LT DATE(CURRENT_DATE". Expected tokens may include: "". 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)

效果很好。如果有人知道更简洁的语法,请随时发表评论。

最佳答案

我认为语句的语法是正确的。如果我运行查询:

select CURRENT_DATE - DAY(CURRENT_DATE) DAYS from sysibm.sysdummy1;

它执行并正确返回(2/28/2011,今天的日期 3 月 29 日)。

尽管我找不到任何明确说明默认值中不允许使用数学函数的内容,但 db2 CREATE TABLE默认情况下的语法图如下所示,并且未列出函数:
default-values

|--+-constant-------------------------------------------+-------|
+-datetime-special-register--------------------------+
+-user-special-register------------------------------+
+-CURRENT SCHEMA-------------------------------------+
+-NULL-----------------------------------------------+
'-cast-function--(--+-constant------------------+--)-'
+-datetime-special-register-+
+-user-special-register-----+
'-CURRENT SCHEMA------------'

我还尝试了以下测试:
create table test (
test_column integer with default 1
);

create table test2 (
test_column integer with default (2 - 1)
);

测试已创建,而 test2 未创建。

我认为您可以使用插入后触发的触发器来完成您想要的操作。

关于DB2 日期列默认为上个月的最后一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com