我有一个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>