Вытяните дату в дату, передав дату вручную - PullRequest
0 голосов
/ 12 ноября 2018

Как извлечь данные из таблицы, передав дату вручную,

Мой код:

select count(*),id,time_stamp 
from tab 
where trunc(time_stamp)='12-11-2018'
group by id,time_stamp.

Получается ошибка типа not a valid month

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вы не можете просто использовать строку даты любого формата при сравнении с датами, она должна либо соответствовать NLS_DATE_FORMAT, либо вы должны преобразовать ее, используя TO_DATE.

Более того, предпочитайте не использовать TRUNC в столбце даты непосредственно в where clause для сравнения. Он будет медленнее и может не использовать индекс, если он существует в столбце time_stamp (если только у вас нет индекса на основе функций для TRUNC(time_stamp). Используйте простые литералы DATE/TIMESTAMP с условиями >= & <.

 select count(*),id,time_stamp 
 from tab 
 where time_stamp >= DATE '2018-11-12' AND time_stamp < DATE '2018-11-12' + 1
 group by id,time_stamp
0 голосов
/ 12 ноября 2018

Вы должны конвертировать varchar в дату, используя to_date function

 select count(*),id,time_stamp 
 from tab 
 where trunc(time_stamp)=to_date('12-11-2018','dd-mm-yyyy') 
 group by id,time_stamp.

TO_DATE преобразует тип данных CHAR, VARCHAR2, NCHAR или NVARCHAR2 в значение типа DATE.

...