У меня есть следующие TABLE.Sample1
:Oracle SQL: Сравнение извлеченного Дата в Timestamp
Col1(varchar) | Col2(timestamp)
---------------------------------------
A | 08-NOV-16 09.59.52.000000000 AM
B | 08-NOV-16 10.05.12.000000000 AM
C | 09-NOV-16 10.05.12.000000000 AM
Предположим, что я хочу, чтобы все строки с учетом даты в формате DD MON YYYY
.
Вот мой первоначальный запрос:
SELECT *
FROM Sample1
WHERE CAST(Col2 as DATE) = TO_DATE('8 NOV 2016','DD MON YYYY');
мне очень интересно, почему этот запрос не работает на равенстве (=
), но отлично работает на неравенствах (>
, <
, <=
, >=
, <>
) , Разве я не сравниваю одни и те же типы данных здесь?
Я закончил использовать функцию TO_CHAR
, чтобы сделать эту работу, но она задает вопрос, существует ли более простой или более прямой подход к этому?
SELECT *
FROM Sample1
WHERE TO_CHAR(CAST(Col2 as DATE)) = TO_CHAR(TO_DATE('8 NOV 2016','DD MON YYYY'));