如何处理日期的DB2默认值

如何处理日期的DB2默认值,db2,ibm-midrange,Db2,Ibm Midrange,因此,我在DB2表中有一个名为过时更改日期的字段,用于存储记录被标记为过时的日期。我不知道如何在CREATETABLE语句中定义它 如果我给默认值NOTNULL,它将输入一个默认值,这是我不想填充的当前日期,因为如果它被填充,它将指示记录在当前日期被废弃 另外,我不想用NULL填充。那么我该如何处理这种情况呢?看起来您使用的是日期字段,因此可以使用格式日期范围中的第一个有效日期作为默认值。在某些地方,IBM将0001-01-01视为空日期,但这仅适用于具有4位年份的格式。对于以下各种日期格式:

因此,我在DB2表中有一个名为过时更改日期的字段,用于存储记录被标记为过时的日期。我不知道如何在CREATETABLE语句中定义它

如果我给默认值NOTNULL,它将输入一个默认值,这是我不想填充的当前日期,因为如果它被填充,它将指示记录在当前日期被废弃


另外,我不想用NULL填充。那么我该如何处理这种情况呢?

看起来您使用的是日期字段,因此可以使用格式日期范围中的第一个有效日期作为默认值。在某些地方,IBM将
0001-01-01
视为空日期,但这仅适用于具有4位年份的格式。对于以下各种日期格式:

FORMAT START END 4 digit years (e.g. *ISO) 0001-01-01 9999-12-31 3 digit years (e.g. *CYMD) 1900-01-01 2899-12-31 2 digit years (e.g. *YMD) 1940-01-01 2039-12-31 格式开始和结束 4位年份(例如*ISO)0001-01-01 9999-12-31 三位数年份(例如*CYMD)1900-01-01 2899-12-31 两位数年份(例如*YMD)1940-01-01 2039-12-31
日期字段只能保存有效日期或空值

我们不清楚如何猜测您应该使用哪个日期作为默认日期。您已经消除了NULL和CURRENT DATE,这似乎是两个合乎逻辑的选择。除非您已经知道应该设置的特定日期,否则任何其他内容都将是无效值或不正确的日期。因此,date NOT NULL默认值“0001-01-01”是我计划添加到日期声明中的内容。已请求我的领导批准。让我们看看。根据具体情况,使用范围内的第一个或最后一个日期也是同样好的选择。如果日期是某个范围内的端点,我将使用该范围内的最后一个日期作为默认值
9999-12-31
。否则,我通常使用
0001-01-01