2012-10-10 135 views
1

我有一些信息,並在一個時間戳存儲HSQL獲取日期和時間從TIMESTAMP

我想選擇像0AM和下午5點之間十月每個信息特定時間段的信息一個HSQLDB表。

我沒有發現任何像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()和分鐘(),但如果沒有其他任何簡單的解決方案我不知道。

回答

2

沒有必要對這種專門用作HSQLDB支持通用CAST表達用於此目的

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

HSQLDB還支持自動澆鑄從DATE到時間戳。因此,可以使用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' 
+0

謝謝,這就是我一直在尋找的。 – caRameL