2013-02-19 76 views
1

我只是试图将expire_date_membership设置为将在当前日期之后2年的日期,但不要缝合以获得正确的语法。 有人可以帮忙吗?DB2 - 增量CURRENT_DATE

CREATE TABLE Members (
    pid INTEGER NOT NULL, 
    registration_date_membership DATE DEFAULT CURRENT_DATE, 
    expire_date_membership DATE DEFAULT (CURRENT_DATE + 24 MONTHS), 
    membership_fees DOUBLE, 
    overdue_fees DOUBLE, 
    PRIMARY KEY(pid), 
    FOREIGN KEY (pid) REFERENCES Person) 

错误消息:

DB21034E该命令被处理为一个SQL语句,因为它是 不是有效的命令行处理器命令。在SQL处理期间,它返回了 :SQL0104N在 “ate_memebership DATE”之后找到了一个意外标记“DEFAULT”。预期的令牌可能包括:“CHECK”。 SQLSTATE = 42601

回答

2

您错过了WITH关键字。

您的查询应该是:

CREATE TABLE Members (
    pid INTEGER NOT NULL, 
    registration_date_membership DATE WITH DEFAULT CURRENT_DATE, 
    expire_date_membership DATE WITH DEFAULT (CURRENT_DATE + 24 MONTHS), 
    membership_fees DOUBLE, 
    overdue_fees DOUBLE, 
    PRIMARY KEY(pid), 
    FOREIGN KEY (pid) REFERENCES Person) 

更多:Default values

+0

感谢,但...仍然不起作用 – user123456 2013-02-19 05:25:29

+0

什么是行不通的?错误还是什么? – 2013-02-19 05:45:36

+0

DB21034E该命令作为SQL语句处理,因为它不是 有效的命令行处理器命令。在SQL处理期间,它返回: SQL0104N在“ip DATE WITH DEFAULT”之后发现了一个意外的令牌“(”) 预期的令牌可能包括:“CHECK”SQLSTATE = 42601 – user123456 2013-02-19 05:49:00

0

希望这会帮助你,但不是日期数据类型,它已更改为TIMESTAMP。

registration_date_membership TIMESTAMP WITH DEFAULT CURRENT TIMESTAMP, expire_date_membership TIMESTAMP WITH DEFAULT TIMESTAMPADD(256,40,TIMESTAMP((CURRENT TIMESTAMP)),