我在查询中有以下WHERE
子句:
SELECT ...
FROM ...
WHERE IMPORT_DATE between
to_date('2018-03-16 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
to_date('2018-03-16 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
我想写两个新的查询:
如何在Oracle中执行此操作?
答案 0 :(得分:2)
由于Oracle没有真正的DATE
数据类型且始终包含时间,因此通常最好不要将between
用于此类条件,而是一起使用>=
<
与第二天午夜相比。
要查找&#34;今天&#34;的行使用:
SELECT ...
FROM ...
WHERE import_date >= trunc(sysdate)
AND import_date < trunc(sysdate) + 1;
或:
SELECT ...
FROM ...
WHERE import_date >= trunc(sysdate) - 2
AND import_date < (trunc(sysdate) - 2) + 1;
在第二个表达式中,括号并不是真正需要的,它们只是用于记录它与第一个表达式相同的表达式。
答案 1 :(得分:1)
select trunc(sysdate) from dual;
今天没有任何时间返回
select trunc(sysdate) - interval '2' day from dual;
在没有时间的情况下返回今天的前2天。
您还可以使用month
,hour
,year
等代替day
。