2016-11-15 52 views
2

以下兩個查詢是相同的,只是第一個在最後一行有> =,第二個有=。然而,第一個返回129行,而第二個返回0.今天是2016年11月15日,所以我期望他們返回相同。 date_time的數據類型是日期。有人可以解釋爲什麼下面的查詢功能不同嗎?從字面上看,兩者之間的唯一區別是

有人可以解釋爲什麼簡單地改變運算符從> =改變結果?謝謝,

select orderid 
    from order_log 
    where order_version = 0 
    and description = 'Order Complete' 
    and date_time **>=** to_date('11-15-2016', 'MM-DD-YYYY') 

select orderid 
    from order_log 
    where order_version = 0 
    and description = 'Order Complete' 
    and date_time **=** to_date('11-15-2016', 'MM-DD-YYYY') 
+0

你有沒有看完整時間戳,包括時,分,秒等?似乎有訂單是來自2016年11月16日的時間戳。你是一個國際網站嗎?是否有來自其他時區的帶當地時間戳的訂單?所有日期都轉換爲utc還是單個時區? – mba12

+1

感謝mba12,我不確定日期是本地還是UTC,或者是否有轉換髮生,但所有訂單都是在美國這兩個時區的其中一個時區的正常工作時間內輸入的,所以我不知道認爲可以。 –

回答

5

DATE_TIME是時間戳(日期+時間),你沒有那個在午夜(2016年11月15日00:00:00)恰好發生的事件。


select   sysdate 
       ,case when sysdate = date '2016-11-16' then 'Y' else 'N' end as is_equal 

from   dual 

SYSDATE    IS_EQUAL 
2016-11-16 00:23:37 N 
+0

太好了,謝謝,這很有道理。 –

相關問題