2014-01-12 4 views
2
select flightdate from flight; 
 
FLIGHTDATE 

01-DEC-12 10.09.01.340000 AM 
02-DEC-12 10.09.01.340000 AM 
02-DEC-12 10.09.01.340000 AM 
03-DEC-12 10.09.01.340000 AM 
05-DEC-12 10.09.01.340000 AM 
03-DEC-12 10.09.01.340000 AM 
04-DEC-12 10.09.01.340000 AM 
06-DEC-12 10.09.01.340000 AM 

Теперь я хочу, чтобы получить flightdate> 03-DEC-12ORACLE- запрос о TIMESTAMP

Я написал запрос в качестве

select flightdate from flight where flightdate>'03-DEC-12' 

выход:

 
03-DEC-12 10.09.01.340000 AM 
05-DEC-12 10.09.01.340000 AM 
03-DEC-12 10.09.01.340000 AM 
04-DEC-12 10.09.01.340000 AM 
06-DEC-12 10.09.01.340000 AM 

Я даже получаю 03-DEC-12

ответ

3

Вы получаете события с 3 декабря, потому что 03-DEC-12 получает предмет «2012-12-03T00:00:00», а событие 10 часов после полуночи.

Если вы хотите события, начиная на следующий день, используйте

SELECT * 
FROM flight 
WHERE FLIGHTDATE >= DATE '2012-12-04' 
-- or FLIGHTDATE >= (DATE '2012-12-03') + 1 

Вы можете также усечение DateTime на дату, используя TRUNC function, но это может сделать запрос, не sargable:

SELECT * 
FROM flight 
WHERE TRUNC(FLIGHTDATE) > TO_DATE('03-DEC-12', 'DD-MON-YY') 
+0

Спасибо you.can у плз объяснить мне, что TRUNC в Trunc (flightdate) делают – rohith

+0

@Bharath - Митч включил ссылку на документацию для 'trunc', что объясняет ясно, что ти делает. –

0
  • Здесь ваша колонка Flightdate содержит отметку времени (03-DEC-12 10.09.01.340000).

  • В этом пункте вы предоставили полетный полет> '03 -DEC-12 '.

  • Oracle рассматривали дату, поставляемый в flightdate> '03 -дек-12 00.00.00.000'

  • Так что, когда когда-либо вы имеете дело с датой его функции всегда лучше использовать TO_DATE().

Смежные вопросы