似乎有点微不足道的问题,但我使用hsqldb获得的行为是反直觉的。
以下select不返回任何行(假设我之前插入了2行,时间戳值等于CURRENT_TIMESTAMP
):
SELECT * FROM webshop.transactions t WHERE (t.expiration_time <= CURRENT_TIMESTAMP)
我预计这可能会发生,因为在比较之前,时间戳被转换为数字,这可能是负数。这可以解释结果,但仍然提出了如何比较时间戳的问题?
答案 0 :(得分:2)
如果WEBSHOP.TRANSACTIONS.EXPIRATION_TIME列定义为TIMESTAMP,那么您的比较是正确的。 HSQLDB本身支持TIMESTAMP作为可以比较的数据类型。
答案 1 :(得分:0)
你正在比较两个字符串,这绝对不是你想要的。有关如何正确执行此操作的示例,请参阅the manual。基本上,使用t.expiration_time
强制转换为数字,而不是t.expiration_time+0
。同上CURRENT_TIMESTAMP
。
(我找不到特定于hsqldb的链接,但原理是一样的。)