這可能看起來像一個愚蠢的問題,但我很少使用SQL。兩個日期之間的行?
我有一個名爲DATETIME_INS的日期時間列的表Empl_Transactions
。此列的值看起來像這樣11/28/2016 2:23:00
。
我想返回列DATETIME_INS有昨天的日期的所有行。所以我嘗試了以下查詢,但他們並沒有完全回報我所尋找的。前兩個我認爲會工作的查詢返回當前日期的行。
-- This returns rows inserted today
select * from Empl_Transactions WHERE
DATETIME_INS >= SYSDATE-1 and DATETIME_INS < SYSDATE
-- This also returns rows inserted today
select * from Empl_Transactions WHERE
DATETIME_INS >= CURRENT_DATE-1 and DATETIME_INS < CURRENT_DATE
-- This returns 0 rows
select * from Empl_Transactions WHERE
DATETIME_INS >= to_date(CURRENT_DATE-1,'DD-MM-YYYY')
and DATETIME_INS < to_date(CURRENT_DATE,'DD-MM-YYYY')
-- works correctly, but I'm using a static value as date
select * from Empl_Transactions WHERE
DATETIME_INS >= to_date('11/27/2016','MM-DD-YYYY')
DATETIME_INS < to_date('11/28/2016','MM-DD-YYYY')
order by DATETIME_INS asc
-- I get error "Not a valid month"
select * from Empl_Transactions WHERE
DATETIME_INS >= to_date(CURRENT_DATE-1,'MM-DD-YYYY')
and DATETIME_INS < to_date(CURRENT_DATE,'MM-DD-YYYY')
日期時間數據類型包含時間部分,所以如果你只需要日期porti on,然後使用trunc函數...在trunc(DATETIME_INS)= trunc(sysdate) - 1 –
使用TRUNC的問題是,它需要超過2分鐘來顯示任何結果,其中使用任何過濾器,我已經嘗試幾乎立即返回數據(即使不正確)。 – rbhat
btw這裏沒有PL/SQL。 –