我有一个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()等功能,但我想知道是否没有其他更简单的解决方案。
答案 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'