【问题标题】:Oracle date calculations trunc(sysdate)Oracle 日期计算 trunc(sysdate)
【发布时间】:2012-08-17 08:33:19
【问题描述】:

我需要对来自 Oracle 数据库的查询进行限定,以获得基于特定日期范围的报告

第一次查询

5pm-7am(昨天下午 5 点到今天早上 7 点之间)

第二次查询

早上 7 点到下午 5 点((昨天下午 5 点,今天早上 7 点)

我该怎么做???我需要知道 Oracle 语法才能指定这些日期标准

提前致谢

【问题讨论】:

  • 我假设第二个查询的评论应该是“今天早上 7 点到下午 5 点之间”

标签: oracle datetime truncate date-arithmetic


【解决方案1】:

我可能会做类似的事情

WHERE some_date_col BETWEEN trunc(sysdate-1) + interval '17' hour -- 5pm yesterday
                        AND trunc(sysdate) + interval '7' hour -- 7am today

WHERE some_date_col BETWEEN trunc(sysdate) + interval '7' hour -- 7am today
                        AND trunc(sysdate) + interval '17' hour -- 5pm today

adding hours and minutes to dates 上的另一个帖子更详细地介绍了指定日期偏移的不同方法。

【讨论】:

  • 嗨,谢谢,实际上我可能会分开报告,所以第一个查询是 DISCH_DT_TM BETWEEN pi_to_gmt(TRUNC(SYSDATE) - ???,( pi_time_zone(2) )) AND SYSDATE ? ?? /* 这是
  • @rgvwed - 我不确定pi_to_gmt 是什么或pi_time_zone(2) 是什么意思。我假设这些是您系统中您了解其行为的功能。您可以使用我在单独报告中发布的每个WHERE 子句——只需根据您的要求添加对函数的任何调用即可。
  • 好的,我将在我的数据库上测试间隔,看看是否有效,它究竟是如何工作的?还有其他方法可以做到这一点
  • 截断和间隔实际上是做什么的?它会重置当前日期吗?
  • @rgvwed - trunc(some_date) 返回some_date 当天的午夜。如果您传入代表 2012 年 8 月 22 日凌晨 12:42:00 的 DATE,您将返回 2012 年 8 月 22 日午夜。在这种情况下,添加间隔将日期向前移动指定的小时数(尽管您可以使用其他度量(即小时、分钟、秒、天等)指定间隔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 2021-12-29
  • 2015-10-06
相关资源
最近更新 更多