一尘不染

SQL:获取在特定日期范围内创建的记录

sql

我有上周创建的一组记录,我只想检索那些在6h45到19h15之间创建的记录。我有一栏creation_date可以使用。

如何在sql中执行此操作?


阅读 122

收藏
2021-03-17

共1个答案

一尘不染

在Oracle中,我们可以将日期转换为数字,并以多种方式对其应用算术运算。

例如sysdate-7给我们七天前的日期。trunc(some_date)从日期列中删除时间元素。并将to_char(some_date,'SSSSS')其时间元素指定为自午夜以来的秒数。所以06:45:00是24300秒,而18:15:59是69359秒(请检查这些数字,因为它们是信封后面的数字)。

无论如何,将所有内容放在这样的单个查询中……

select *
from your_table
where creation_date >= trunc(sysdate)-7
and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359

…将在核心小时内生成带有上一个时间元素的上一周创建的所有记录。

2021-03-17