这是我期望的结果[我有一个包含2列NAME&DT的表T1,如图所示
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中有数据,如图所示,今天的日期是2021年2月12日...如果今天运行查询,则需要获取DT值为2021年2月14日的记录。在今年,我将在2021年2月12日运行查询,我需要选择所有DT值为2021年的记录,然后选择DT值为2021年2月14日的记录。
以同样的方式,如果我在明年运行相同的查询,让我们说,我在2022年3月17日运行了该查询,那么我需要获取具有DT值2022年3月19日的记录。在明年,我将在2022年3月17日运行查询,我需要选择所有DT值为2022年的记录,然后选择DT值为2022年3月19日的记录。
我不知道我需要在WHERE CLAUSE中写什么查询,并且查询应该是相同的,并且需要多年执行相同的查询
] 2
通过使用SYSDATE
,您将始终能够基于当前日期获取值。如果您需要根据当前会话的日期/时区从表中进行选择,则只需替换SYSDATE
为CURRENT_DATE
。
对我来说,今天是2021年2月11日。
该查询将返回日期为2021年2月13日的所有行。明天查询将返回所有日期为2021年2月14日的行
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句