SQL日期和时间

SQL日期和时间,sql,oracle,date,to-date,to-char,Sql,Oracle,Date,To Date,To Char,我需要在大学数据库中获取学生名单以及申请受理日期和时间。报告在晚上6点发送给管理层,但管理层可以在晚上7点8点或夜间的任何时间运行报告。应用程序应该在报告运行日期前2天 甲骨文:我已经创建了一个查询,但它将提供一天24小时的整个应用程序。这个查询的问题是当管理层在下午6点和8点运行查询时,在这段时间内任何学生都会被录取。结果会有所不同 select to_char(application_accepted_date, 'DD-MON-RR:HH24:MI:SS') from

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

甲骨文:我已经创建了一个查询,但它将提供一天24小时的整个应用程序。这个查询的问题是当管理层在下午6点和8点运行查询时,在这段时间内任何学生都会被录取。结果会有所不同

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日运行

假设应用程序接受日期是数据模型中的日期数据类型,请尝试以下操作:

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的数据。

如果需要在下午6点切断,则只需在截断的日期上添加18/24(18小时)。你也做了很多不必要的铸造。只要
application\u accepted\u 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
选择至字符(应用程序接受日期'DD-MON-RR:HH24:MI:SS')
自申请受理之日起
其中应用程序接受日期>=TRUC(sysdate-3)+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
选择至字符(应用程序接受日期'DD-MON-RR:HH24:MI:SS')
自申请受理之日起
其中应用程序\u接受\u日期>=trunc(sysdate-3)+间隔“18”小时
和应用程序接受日期
to_date(trunc(sysdate-2),'DD MON rr:HH24:MI:SS')
没有用,只需编写
trunc(sysdate-2)
-将
日期
值转换为
日期
值是毫无意义的