【发布时间】:2018-06-21 00:59:12
【问题描述】:
我在下面编写了运行良好的查询,并且它在前一周每次都获取数据。
select t.day_id
from F_TIME t
where t.day_id >= TO_NUMBER (TO_CHAR( TRUNC ( SYSDATE , ''IW'' ) - 7 , ''YYYYMMDD'' ))
and t.day_id < TO_NUMBER ( TO_CHAR ( TRUNC ( SYSDATE , ''IW'' ), ''YYYYMMDD'' ))
但现在我想重写此查询,使其始终从每月 1 日到 sysdate 获取数据。因此,例如,如果我现在运行此查询,我应该获取 2018 年 1 月 1 日至 2018 年 1 月 11 日的数据。
如果我在 2 月 1 日运行此查询,那么它将返回一月份的整个月份的数据。我不确定它是否可以在单个查询中进行。
dayid 是数字数据类型,格式为例如 20170815
【问题讨论】:
-
能否提供样本数据的cte?
-
day_id是什么数据类型?日期、字符串、数字?每个人的答案都不一样。 -
day_id 为数字数据类型,数据存储格式为 20040501
-
请edit您的问题更具体地指定您所需的日期范围。如果您在
2018-01-11上运行查询,应该包括什么第一个和最后一个日期?如果您在2018-03-30上运行查询,应该包括哪些日期(最后一个是一个技巧问题)。
标签: sql oracle datetime date-comparison sysdate