0

次のような列を持つ Exasol データテーブルがあります。

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 です。ここで、TIME が 12:00:00 より前のすべての行を表示する SQL クエリを記述したいと思います。日付に関係なく(時間のみが重要です)、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.%';

動作していません。エラーメッセージが表示されます:

'データ例外 - YYYY 形式のトークンの値が無効です。値: '%12:00:00.%' フォーマット: 'YYYY-MM-DD HH24:MI:SS.FF6'

これを解決する方法はあるので、日付に関係なく期間を選択できますか?

4

2 に答える 2

0

HOUR入力パラメータでEXTRACT()関数を使用するのと同じソリューションで、次のようにHOUR()関数を使用できます

SELECT * FROM EXA_DBA_AUDIT_SQL WHERE HOUR(START_TIME) BETWEEN 8 and 9; -- up to 9:59:59
于 2020-02-22T14:48:02.380 に答える