2014-01-12 69 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

您從12月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 

你也可以截斷日期時間使用TRUNC function的日期,但是這可能使查詢非優化搜索:

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

感謝you.canüPLZ給我解釋一下什麼TRUNC(flightdate)的TRUNC做 – rohith

+0

@Bharath - 米奇已經包含了鏈接到文檔'trunc',這解釋清楚什麼TI的做。 –

0
  • 這裏您的Flightdate列包含時間戳(03-DEC-12 10.09.01.340000)。

  • 在where子句中,您提供了flightdate> '03-DEC-12'。

  • 甲骨文對待您所提供的flightdate> 03-DEC-12 00.00.00.000'

  • 日期所以,當你永遠對付日的總是最好使用TO_DATE()函數。