用于日期的默认格式由DB2数据库的地区代码确定(可以在创建数据库时指定)。例如,我的数据库是使用 region=US 创建的。因此日期格式如下所示:
values current date
1
----------
05/30/2003
1 record(s) selected.
您可以从 DB CFG 获得地区代码。
db2 get db cfg | egrep 'code|territory'
Database territory = US
Database code page = 1208
Database code set = UTF-8
Database country/region code = 1
也就是说,格式是MM/DD/YYYY。如果要更改格式,可以绑定 db2 实用程序包集合以使用不同的日期格式。
要使用 SQL 获取当前日期、时间和时间戳(基本上让您了解日期格式是什么),请参考适当的 DB2 寄存器:sysibm.sysdummy1表是一个特殊的内存表,可用于发现DB2 寄存器的值
db2 "SELECT current date FROM sysibm.sysdummy1 "
1
----------
06/02/2014
1 record(s) selected.
即使我们在函数中省略引号,DATE 函数仍然有效,但结果不正确:
db2 "SELECT date(2001-09-22) FROM sysibm.sysdummy1 "
1
----------
05/24/0006
1 record(s) selected.
当 DATE 函数获得一个字符串作为输入时,它假定它是 DB2 日期的有效字符表示,并相应地对其进行转换。相反,当输入为数字时,该函数假定它表示从当前时代(即 0001-01-01)开始的天数减一。在上面的查询中,输入是 2001-09-22,等于 (2001-9)-22,等于 1970 天。
如果以上所有内容都适用,那么下面的命令应该可以很好地解决您的问题。
SELECT * FROM table WHERE registrationdate > '10/01/2002';