首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle日期之间sysdate范围与文字日期范围

Oracle日期之间sysdate范围与文字日期范围
EN

Stack Overflow用户
提问于 2019-05-01 05:05:35
回答 1查看 20关注 0票数 0

情况是这样的:

代码语言:javascript
复制
select sysdate from dual ;

>  30-APR-19

SELECT
  count(*)
FROM 
  event_log
WHERE
  edate between to_date('04232019', 'MMDDYYYY') and to_date('04292019', 'MMDDYYYY') ;

> 1156

SELECT
  count(*)
FROM 
  event_log
WHERE
  edate between (sysdate-7) and (sysdate-1) ;

> 1276

这是一个事件日志,行有日期标记(前几天的行数是静态的)。

我的问题是--为什么计数不一样?我遗漏了什么?这两个范围之间是否存在语义上的差异?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-01 05:15:20

SYSDATE是一个同时返回日期和时间部分的函数。如果你不用TRUNC把它吃了,你会得到两个:

代码语言:javascript
复制
SQL> select sysdate,
  2         sysdate - 7 prev_week,
  3         sysdate - 1 yesterday
  4  from dual;

SYSDATE             PREV_WEEK           YESTERDAY
------------------- ------------------- -------------------
30.04.2019 23:13:14 23.04.2019 23:13:14 29.04.2019 23:13:14

SQL>

如果你TRUNC吃了它,你会得到午夜:

代码语言:javascript
复制
SQL> select trunc(sysdate) today,
  2         trunc(sysdate - 7) prev_week,
  3         trunc(sysdate - 1) yesterday
  4  from dual;

TODAY               PREV_WEEK           YESTERDAY
------------------- ------------------- -------------------
30.04.2019 00:00:00 23.04.2019 00:00:00 29.04.2019 00:00:00

SQL>

这意味着您的最后一个条件可能应该是

代码语言:javascript
复制
where edate between trunc(sysdate-7) and trunc(sysdate-1) ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55928645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档