我想选择'01 -Jan-2016'和昨天之间的operation_date的数据。我使用的代码如下:
select *
where operation_date between '01-Jan-2016' and sysdate-1
from TABLE
但是sysdate会返回日期和时间。因此,上述输出包括'01 -Jan-2016'和2017年11月14日09:50:51之间的所有数据。我今天才想要数据。如何将当前时间转换为没有时间的日期?感谢。
答案 0 :(得分:1)
似乎您正在寻找trunc()
。
示例强>
SELECT sysdate - 1 AS current_Date_Time
,trunc(sysdate) - 1 AS CURRENT_DATE1
,trunc(sysdate - 1) AS CURRENT_DATE2
FROM dual
结果
CURRENT_DATE_TIME CURRENT_DATE1 CURRENT_DATE2
----------------------------------------------------------
13.11.2017 18:08:41 13.11.2017 00:00:00 13.11.2017 00:00:00
<强> DEMO 强>
所以正确的查询将如下所示。
SELECT *
WHERE operation_date BETWEEN DATE '2016-01-01' -- ANSI Date Literal
AND trunc(sysdate - 1)
FROM TABLE
OR
SELECT *
WHERE operation_date BETWEEN DATE '2016-01-01' -- ANSI Date Literal
AND trunc(sysdate) - 1
FROM TABLE