これはちょっと疑問に思えるかもしれませんが、私はめったにSQLを使用しません。2つの日付の間の行?
テーブルEmpl_Transactions
には、DATETIME_INSというdatetime列があります。この列の値は11/28/2016 2:23:00
のようになります。
DATETIME_INS列が昨日の日付を持つ行をすべて返したいとします。だから私は次のクエリを試してみましたが、私が探しているものを返すわけではありません。私が思う最初の2つのクエリは、今日の日付の行を返します。
-- 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を必要とするならtrunc(DATETIME_INS)= trunc(sysdate) - 1 –
TRUNCを使用する際の問題は、結果を表示するのに2分以上かかることです。試してみたところ、たとえ間違っていたとしてもすぐにデータが返されました。 – rbhat
btwここにPL/SQLはありません。 –