2017-02-16 78 views
0

我有一個數據表Exasol與看起來像這樣的列:Exasol SQL TIMESTAMP查詢

2016-10-25 08:01:36.0  
2016-10-25 08:30:09.0  
2016-10-25 09:00:15.0  
2016-10-26 08:02:38.0  
2016-10-26 10:00:44.0  
2016-10-27 10:00:44.0 

該列的數據類型爲TIMESTAMP。現在我想陳述一個SQL查詢,它顯示了在12:00:00之前TIME的所有行。 無論什麼日期(只有時間很重要),並將它們與12:00:00之後的日期分開。 (如果我甚至可以說'8到12'和'12到18'之類的話,那將會很好。

聲明是這樣的:

SELECT * FROM MySCHEMA.MyTable WHERE entryTime < '%12:00:00.%'; 
SELECT * FROM MySCHEMA.MyTable WHERE entryTime BETWEEN '%08:00:00.%' AND '%12:00:00.%'; 

不工作。我收到錯誤消息:

'data exception - YYYY format token的無效值;值:'%12:00:00.%'格式:'YYYY-MM-DD HH24:MI:SS.FF6'

所以有辦法解決這個問題,所以我可以選擇一段時間不管它是什麼日期?

+0

'%'是一個'LIKE'通配符,用於字符數據類型。 – jarlh

+0

不知道Exasol,但在Standard SQL中,這將是'CAST(entryTime AS TIME)'時間'08:00:00'和'TIME '12:00:00'' – dnoeth

+0

感謝提示@dnoeth。不幸的是,Exasol不支持這一點。我會找到解決辦法。 – BlainTheMono

回答

0

爲Exasol的SELECT語句看起來像這樣:

SELECT * FROM MySCHEMA.MyTable WHERE EXTRACT(HOUR FROM entryTime) BETWEEN 8 and 10; 

這對於CAST(...)語句的等價物。

那麼另一個例子,那裏是一個第二WHERE子句看起來是這樣的:

SELECT * FROM MySCHEMA.MyTable WHERE myNames LIKE 'Sam%' AND EXTRACT(HOUR FROM entryTime) BETWEEN 8 and 10; 

的結果將是人/事物的表像薩姆...(薩曼莎,薩穆埃爾,薩米拉myNames。 ...),並且入口時間在08:00:00.0000和10:59:59.9999之間,不管它是什麼日期。