两个日期之间的行?

时间:2016-11-28 20:32:55

标签: oracle

这似乎是一个愚蠢的问题,但我很少使用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')

2 个答案:

答案 0 :(得分:4)

尝试:

?sample

答案 1 :(得分:0)

这就是昨天的日期:

SELECT TRUNC(SYSDATE) - 1 FROM dual;

对于您的表格,查询应为:

SELECT *
FROM   empl_transactions
WHERE  TRUNC(datetime_ins) = TRUNC(SYSDATE) - 1;