HSQL从TIMESTAMP获取日期和时间

时间:2012-10-10 09:39:43

标签: hsqldb

我有一个HSQLDB表,其中包含一些信息以及存储时间戳的位置

我想从特定时间段选择信息,比如10月到5点之间每个10月的信息。

我没有找到像mysql'ones DATE(myfield)或TIME(myfield)这样的功能,这对我想要的东西来说是完美的。

SELECT * FROM myTable 
WHERE DATE(myField) BETWEEN '2012-10-01' AND '2012-10-30' 
AND TIME(myField) BETWEEN '00:00:00' AND '17:00:00'

我发现的唯一的事情是使用YEAR(),DAYOFMONTH(),DAYOFYEAR(),HOUR()和Nd MINUTE()等功能,但我想知道是否没有其他更简单的解决方案。

1 个答案:

答案 0 :(得分:3)

不需要这样的专用函数,因为HSQLDB为此目的支持通用CAST表达式

CAST(myField AS DATE)
CAST(myField AS TIME)

HSQLDB还支持从DATE到TIMESTAMP的自动转换。因此,可以在myField列上使用索引的优化查询应如下所示:

SELECT * FROM myTable 
WHERE myField BETWEEN DATE'2012-10-01' AND DATE'2012-10-30' 
AND CAST(myField AS TIME) BETWEEN TIME'00:00:00' AND TIME'17:00:00'