sql - SQL 日期和时间
问题描述
我需要在大学数据库中获取具有申请接受日期和时间的学生名单。报告在晚上 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 日运行
解决方案
如果它需要在下午 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
推荐阅读
- mysql - MySQL 消失得太频繁了
- c++ - 在结构中初始化数组
- javascript - 如何在与 ScrollView 的本机反应中实现 scrollspy?
- python - 如何确定圆与各种障碍物之间的像素距离
- angular - 使用h ng-bootstrap4在角度4中显示模态弹出正文中的组件
- python - 在 pandas 数据框中插入新行,更改一些时间戳,同时保留其他数据
- java - 如何将多个 JsonProperty 映射到单个变量?
- node.js - 如何从流星/nodejs 应用程序收集内存转储?
- c# - 如何从本地系统中的文件夹启动 MVC 服务器
- monitoring - 监控 Azure Data Lake Store