首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改SYSDATE函数

修改SYSDATE函数
EN

Stack Overflow用户
提问于 2017-06-10 04:43:32
回答 1查看 41关注 0票数 0

在我的一个SQL查询中,我使用了

[... and z.READ_TIMESTAMP > TIMESTAMP_TO_EPOCH(TRUNC(SYSDATE-3)]

如果我希望日期恰好是2017年5月31日,我会使用'SYSDATE‘( date -n)函数还是其他表达式?或者如何修改我2017年5月31日的查询

EN

回答 1

Stack Overflow用户

发布于 2017-06-10 12:59:08

如果您希望日期恰好是2017年5/31,则根据您需要的数据类型(日期或时间戳)使用或。因为您已经在使用SYSDATE,所以date数据类型应该可以工作。

代码语言:javascript
复制
-- e.g.
select
      to_date('5/31/2017','mm/dd/yyyy')
    , to_timestamp('5/31/2017','mm/dd/yyyy')
from dual

...
and z.READ_TIMESTAMP > TIMESTAMP_TO_EPOCH(to_date('5/31/2017','mm/dd/yyyy'))

然而,

我怀疑您可能想要的不仅仅是一种建立固定日期的方法。例如,您是否在询问“我如何获得上个月的最后一天?”这可能可以通过使用>=和当前月份的第一天来满足,如下所示:

代码语言:javascript
复制
...
and z.READ_TIMESTAMP >= TIMESTAMP_TO_EPOCH(trunc(sysdate,'MM'))

或者如果确实是上个月的最后一天,可以使用和的组合来实现

代码语言:javascript
复制
and z.READ_TIMESTAMP > 
TIMESTAMP_TO_EPOCH( last_day(add_months(trunc(sysdate,'MM'),-1)) )

如果您不太了解数据的性质和查询目的,请务必注意,当“截断”时使用的每个日期的时间也设置为00:00:000 -因此,如果您的数据包含除00:00:00之外的一天内的时间,则这两个查询可能不会产生相同的结果

代码语言:javascript
复制
.... datetimecolumn > to_date('05/31/2017','mm/dd/yyyy') -- "a"

.... datetimecolumn >= to_date('06/01/2017','mm/dd/yyyy')  -- "b"

例如,结果中将包括2017年5月31日的整个24小时持续时间,但例如,将从结果中排除相同的24小时持续时间。根据我的经验,任何一个月的最后一天都不是定位基于日期/时间的数据的最佳方法,而通常是下个月的第一天才能产生正确的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44466412

复制
相关文章

相似问题

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