如何在sql中将当前时间转换为没有时间的日期?

时间:2017-11-14 16:23:41

标签: sql oracle datetime

我想选择'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之间的所有数据。我今天才想要数据。如何将当前时间转换为没有时间的日期?感谢。

1 个答案:

答案 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