我想在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'。
如果我收到'>'的结果运算符那么为什么我没有得到'='运算符的任何结果? 任何原因或我写错了查询?
谢谢!
答案 0 :(得分:5)
不,DB2存储时间戳的完整值,包括小数秒。您可能希望将系统显示时间戳的格式更改为包含毫秒的内容。
请尝试使用此代码:
SELECT *
FROM Sample
WHERE lastModifiedDate >= TIMESTAMP('2012-04-03 07:59:50')
AND lastModifiedDate < TIMESTAMP('2012-04-03 07:59:50)' + 1 SECONDS
除非您拥有时间戳的完整值,包括毫秒,否则您将获得一个范围 - 在访问一系列数据时,使用'lower -bound inclusive,upper-bound exclusive'。
答案 1 :(得分: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'