这似乎是一个愚蠢的问题,但我很少使用SQL。
我有一个表Empl_Transactions
,其中包含一个名为DATETIME_INS的日期时间列。此列的值类似于此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')
答案 0 :(得分:4)
尝试:
?sample
答案 1 :(得分:0)
这就是昨天的日期:
SELECT TRUNC(SYSDATE) - 1 FROM dual;
对于您的表格,查询应为:
SELECT *
FROM empl_transactions
WHERE TRUNC(datetime_ins) = TRUNC(SYSDATE) - 1;