你如何比较时间戳?

时间:2011-11-14 00:49:02

标签: timestamp hsqldb

似乎有点微不足道的问题,但我使用hsqldb获得的行为是反直觉的。 以下select不返回任何行(假设我之前插入了2行,时间戳值等于CURRENT_TIMESTAMP):

SELECT * FROM webshop.transactions t WHERE (t.expiration_time <= CURRENT_TIMESTAMP)

我预计这可能会发生,因为在比较之前,时间戳被转换为数字,这可能是负数。这可以解释结果,但仍然提出了如何比较时间戳的问题?

2 个答案:

答案 0 :(得分:2)

如果WEBSHOP.TRANSACTIONS.EXPIRATION_TIME列定义为TIMESTAMP,那么您的比较是正确的。 HSQLDB本身支持TIMESTAMP作为可以比较的数据类型。

答案 1 :(得分:0)

你正在比较两个字符串,这绝对不是你想要的。有关如何正确执行此操作的示例,请参阅the manual。基本上,使用t.expiration_time强制转换为数字,而不是t.expiration_time+0。同上CURRENT_TIMESTAMP

(我找不到特定于hsqldb的链接,但原理是一样的。)