【问题标题】:SQL Date and TImeSQL 日期和时间
【发布时间】:2018-10-04 16:34:49
【问题描述】:

我需要在大学数据库中获取带有申请接受日期和时间的学生名单。报告在晚上 6 点发送给管理层,但管理层可以在晚上 7 点到晚上 8 点或晚上的任何时间运行它。申请应该比报告运行日期提前 2 天。

ORACLE:我创建了一个查询,但这将提供一天 24 小时的应用程序。这个查询的问题是当管理层在 6 PM 和 8 PM 运行查询时,并且在这段时间之间接受任何学生。结果会有所不同。

select 
    to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
from 
    tbl_application_accepted_date
where 
    to_date(application_accepted_date, 'DD-MON-rr:HH24:MI:SS') = 
    to_date(trunc(sysdate-2), 'DD-MON-rr:HH24:MI:SS')

;

如果有任何申请在前 6 点之间被接受,我需要在接下来的几天报告中列出清单。意思是,我应该有从前一天下午 6 点开始到申请日 5:59 的录取学生名单。

我在下午 6 点之后收到申请,我不需要在今天的报告中,我应该在第二天的报告中得到这个。该报告于 2018 年 10 月 4 日运行

【问题讨论】:

  • to_date(trunc(sysdate-2), 'DD-MON-rr:HH24:MI:SS') 没用,只写trunc(sysdate-2) - 将DATE 值转换为DATE 值是没有意义的

标签: sql oracle date to-date to-char


【解决方案1】:

如果需要在下午 6 点截断,则只需在截断的日期上加上 18/24(18 小时)。你也在做很多不必要的演员。只要application_accepted_date 是一个日期字段,那么您就可以将其作为一个日期进行比较。

select to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
from tbl_application_accepted_date
where application_accepted_date >= trunc(sysdate-3)+18/24
  and application_accepted_date <  trunc(sysdate-2)+18/24

这将为您提供从 3 天前下午 6 点开始到 2 天前下午 6 点之前的所有申请。

编辑:如果需要,您也可以使用区间文字来执行此操作。与上面的查询相同,但您的意图更明确。

select to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
    from tbl_application_accepted_date
    where application_accepted_date >= trunc(sysdate-3) + interval '18' hour
      and application_accepted_date <  trunc(sysdate-2) + interval '18' hour

【讨论】:

    【解决方案2】:

    假设 application_accepted_date 是数据模型中的 DATE 数据类型,试试这个:

    select 
        to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS')
    from 
        tbl_application_accepted_date
        WHERE  application_accepted_date BETWEEN to_date(To_char(Trunc(SYSDATE - 1),'YYYY-MM-DD') 
                      ||'18:00:00','YYYY-MM-DD HH24:MI:SS) and to_date(to_char(trunc(sysdate),'yyyy-mm-dd')||'17:59:59','yyyy-mm-dd hh24:MI:SS)
    

    这应该总是返回昨天下午 6:00 到今天下午 5:59:59 的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2019-09-06
      相关资源
      最近更新 更多