过去两周的日期筛选



我有一个SQL查询,我试图只选择当天过去两周的记录,即使用"created_on"列。有什么想法吗?我知道我不能用具体的日期,因为今天总是在变化。

select un.id
, t.type_name as type
, un.content_id
, un.app_link
, un.notification_text
, t.id as type_id
, un.seen_yn,un.created_on
, to_char(un.created_on,'YYYY-MM-DD: HH24:MI') as timestamp
from app.user_notifications as un 
left join ref.types as t on t.id = un.notification_type
where un.active_yn = true 
and   un.user_id =  1 
and   un.seen_yn = false                                       order by un.created_on desc

您可以将created_on列与计算";两周前的今天":

un.created_on >= current_date - interval '2 weeks'

或者你也可以减去14天的

un.created_on >= current_date - 14

添加另一个条件,例如

... and un.created_on >= trunc(sysdate) - 14

在Oracle中,当您从DATE数据类型值中减去数字时,您就减去了那么多天,所以减去14就是两周后的

SQL> select sysdate right_now,
2         trunc(sysdate) today_midnight,
3         trunc(sysdate) - 14 two_weeks_back
4  from dual;
RIGHT_NOW           TODAY_MIDNIGHT      TWO_WEEKS_BACK
------------------- ------------------- -------------------
22.03.2022 07:12:54 22.03.2022 00:00:00 08.03.2022 00:00:00
SQL>

或者,如果你更喜欢interval(实际上你在做什么(,那么

SQL> select trunc(sysdate) - interval '14' day from dual;
TRUNC(SYSDATE)-INTE
-------------------
08.03.2022 00:00:00
SQL>

最新更新