2017-02-16 23 views
0

У меня есть DataTable 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-запрос, который показывает мне все строки, где TIME похоже до 12:00:00. Независимо от того, какова дата, (только время имеет значение), и отделяйте их от 12:00 до 12: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.%» Формат: «ГГГГ-ММ-ДД HH24: MI: SS.FF6»

так есть способ решить эту проблему, поэтому я могу выбрать период времени независимо от того, какова дата?

+0

'%' является подстановочным символом 'LIKE', для типов символьных данных. – jarlh

+0

Не знаю об Exasol, но в стандартном SQL это будет 'CAST (entryTime AS TIME) BETWEEN TIME '08: 00: 00 'И TIME '12: 00: 00'' – dnoeth

+0

Спасибо за подсказку @dnoeth. К сожалению, Exasol этого не поддерживает. Я найду работу. – BlainTheMono

ответ

0

оператор SELECT, для Exasol должен выглядеть следующим образом:

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 как Сэм ... (Samantha, Самуил, Самир. ...) и с enterTime между 08: 00: 00.0000 и 10: 59: 59.9999 независимо от того, какова дата.