我有上周创建的一组记录,我只想检索那些在6h45到19h15之间创建的记录。我有一栏creation_date可以使用。
creation_date
如何在sql中执行此操作?
在Oracle中,我们可以将日期转换为数字,并以多种方式对其应用算术运算。
例如sysdate-7给我们七天前的日期。trunc(some_date)从日期列中删除时间元素。并将to_char(some_date,'SSSSS')其时间元素指定为自午夜以来的秒数。所以06:45:00是24300秒,而18:15:59是69359秒(请检查这些数字,因为它们是信封后面的数字)。
sysdate-7
trunc(some_date)
to_char(some_date,'SSSSS')
无论如何,将所有内容放在这样的单个查询中……
select * from your_table where creation_date >= trunc(sysdate)-7 and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359
…将在核心小时内生成带有上一个时间元素的上一周创建的所有记录。