我有一个 HSQLDB 表,其中包含一些信息以及存储时间戳的位置
我想选择特定时间段的信息,例如 10 月上午 0 点到下午 5 点之间的所有信息。
我没有找到任何像 mysql'ones DATE(myfield) OR 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'
Run Code Online (Sandbox Code Playgroud)
我发现的唯一的事情是使用函数 YEAR()、DAYOFMONTH()、DAYOFYEAR()、HOUR() 和 MINUTE() 但我想知道是否没有其他更简单的解决方案。
不需要这样的专门函数,因为 HSQLDB 为此目的支持通用 CAST 表达式
CAST(myField AS DATE)
CAST(myField AS TIME)
Run Code Online (Sandbox Code Playgroud)
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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8857 次 |
| 最近记录: |