我在DB2表中有一个DB2 DATE类型字段。我想通过日期筛选器选择数据。例如:
SELECT *
FROM table
WHERE registrationdate > '2002-10-01';
从上面的查询中,我得到了registrationdate从'1943-10- 01'开始的记录,但这是不正确的。
这些也不起作用:
registrationdate > date('2002-10-01')
date(registrationdate) > date('2002-10-01')
date(registrationdate) > '2002-10-01'
我需要如何比较日期?
5条答案
按热度按时间2o7dmzc51#
DATE文字的SQL标准格式为:
至少,它值得一试:
zmeyuzjn2#
我探索了数据库的一些其他问题,重新启动后它开始工作,所以现在工作正常:
7cjasjjr3#
用于日期的默认格式由DB2数据库的地区代码(可在创建数据库时指定)确定。例如,我的数据库是使用territory=US创建的。因此,日期格式如下所示:
您可以从DB CFG获得区域代码。
也就是说,格式是MM/DD/YYYY,如果您想更改格式,可以绑定db2实用程序包集合以使用不同的日期格式。
要使用SQL获取当前的日期、时间和时间戳,(基本上可以让您了解日期格式是什么)请参考适当的DB2寄存器:sysibm.sysdummy1**表是一个特殊的内存表,可用于发现DB2寄存器的值
即使我们省略函数中的引号,DATE函数仍然有效,但结果不正确:
当DATE函数获取字符串作为输入时,它假定该字符串是DB2日期的有效字符表示,并相应地对其进行转换。相反,当输入为数字时,该函数假定该字符串表示从当前纪元开始算起的天数减1(即0001-01-01)。在上面的查询中,输入为2001-09-22,它等于(2001-9)-22,即1970天。
如果上述所有命令都适用,下面的命令应该可以很好地解决您的问题。
一月一日
beq87vna4#
使用此格式。
byqmnocz5#
在DB2中,您也可以对DATE类型使用'LIKE'。
例如,如果您想要特定日期的所有数据。
这不会出错,并输出数据wrt日期。
或者十年的元组将如下所示:例如:20世纪70年代的记录
将回归70年代的纪录。
Using Like for a specific date in DB2
Finding year using LIKE