2

我想在 db2 中查询时间戳数据类型。我在下面写了查询

Select * from sample where LASTMODIFIEDDATE = timestamp('2012-04-03 07:59:50')

我没有得到上述查询的任何结果,然后我尝试了

Select * from sample where LASTMODIFIEDDATE > timestamp('2012-04-03 07:59:50')

在上面的查询中,我得到了匹配时间戳“2012-04-03 07:59:50”的结果以及更大的时间戳值,例如“2012-04-03 08:59:50”。

如果我得到 '>' 运算符的结果,那么为什么我没有得到 '=' 运算符的任何结果呢?有什么原因还是我写错了查询?

谢谢 !

4

2 回答 2

6

不,DB2 存储时间戳的完整值,包括小数秒。您可能希望将系统显示时间戳的格式更改为包含毫秒的格式。

尝试改用这个:

SELECT * 
FROM Sample
WHERE lastModifiedDate >= TIMESTAMP('2012-04-03 07:59:50')
AND lastModifiedDate < TIMESTAMP('2012-04-03 07:59:50)' + 1 SECONDS

除非您拥有时间戳的完整值(包括毫秒),否则您将获得一个范围 - 在访问一系列数据时,请使用“下限包含,上限不包含”。

于 2012-06-25T19:16:22.623 回答
0

您还可以将 db 列的值单独截断为秒,然后与您的字符串进行比较:

Select * from sample where TRUNC(LASTMODIFIEDDATE, 'SS') = '2012-04-03 07:59:50'

在 DB2 10.5 中工作。您还可以通过以下方式截断:

hour ('HH'), minute('MI'), year('YEAR' or 'YYYY'), month('MONTH' or 'MM'), Day ('DD')

例子:

Select * from sample where TRUNC(LASTMODIFIEDDATE, 'HH') = '2012-04-03 07:00:00'
Select * from sample where TRUNC(LASTMODIFIEDDATE, 'MI') = '2012-04-03 07:59:00'
于 2018-06-19T20:54:09.893 回答