选择值的日期列的记录(查询执行日+ 2天)



这是我所期望的结果[我有一个表T1有2列DT如图

所示
CREATE TABLE T1 ( NAME VARCHAR2(1), DT TIMESTAMP(3) ); 
INSERT INTO T1 VALUES ( ‘A’ , TO_TIMESTAMP(‘2021-02-13 12:00:00.000000000’, ‘YYYY-MM-DD HH24:MI:SS.FF’)); 
INSERT INTO T1 VALUES ( ‘B’ , TO_TIMESTAMP(‘2021-02-14 12:00:00.000000000’, ‘YYYY-MM-DD HH24:MI:SS.FF’)); 
INSERT INTO T1 VALUES ( ‘C’ , TO_TIMESTAMP(‘2022-03-18 12:00:00.000000000’, ‘YYYY-MM-DD HH24:MI:SS.FF’));
INSERT INTO T1 VALUES ( ‘D’ , TO_TIMESTAMP(‘2022-03-19 12:00:00.000000000’, ‘YYYY-MM-DD HH24:MI:SS.FF’)); 

执行上述查询后,数据得到填充,我想以这样一种方式选择记录,如果我在特定年份的今天运行查询,它需要选择DT值(sysdate + 2)的日期.

例如:

我有图中表T1中的数据,今天的日期是12feb 2021…如果我今天运行查询,我需要获得DT值为14 Feb 2021的记录。在今年,我将在2021年2月12日上运行查询,我需要选择DT值为2021年的所有记录然后选择DT值为14 feb 2021的记录。

以同样的方式,如果我在明年运行相同的查询我们说,我在17 march 2022运行查询,我需要得到DT值为19 March 2022的记录。在明年,我将在2022年3月17日运行查询,我需要选择DT值为2022年的所有记录然后选择DT值为19 March 2022

的记录.我不知道我需要在WHERE子句中写什么查询查询应该是相同的,需要在所有年份执行相同的查询

) 2

通过使用SYSDATE,您将始终能够获得基于当前日期的值。如果需要根据当前会话的日期/时区从表中进行选择,只需将SYSDATE替换为CURRENT_DATE

对我来说,今天是2021年2月11日.

此查询将返回日期为Feb 13 2021的所有行。明天,查询将返回日期为Feb 14 2021的所有行。

SELECT *
FROM t1
WHERE dt >= TRUNC (CURRENT_DATE) + 2 AND dt < TRUNC (CURRENT_DATE) + 3;

这个查询将返回年份为2021的所有行。。下一年,查询将返回年份为2022的所有行。

SELECT *
FROM t1
WHERE dt >= TRUNC (SYSDATE, 'YY') AND dt < TRUNC (SYSDATE, 'YY') + INTERVAL '1' YEAR;

相关内容