我想搜索今天的日期和今年的指定月份之间的记录。如果我想在不改变查询的情况下在明年执行相同的查询,那么该月必须基于sysdate我认为?无论如何,这正是我想要实现的目标。这里是我的查询:在今天的日期和今年的指定月份之间搜索记录
感谢
我想搜索今天的日期和今年的指定月份之间的记录。如果我想在不改变查询的情况下在明年执行相同的查询,那么该月必须基于sysdate我认为?无论如何,这正是我想要实现的目标。这里是我的查询:在今天的日期和今年的指定月份之间搜索记录
感谢
试试这个:
SELECT *
FROM details n
WHERE n.id (SELECT p.nhno
FROM patient p
WHERE p.fname = 'James'
AND p.surname = 'Gump'
AND p.nhno = n.nhno
AND n.daterecorded
BETWEEN TO_DATE('01-OCT-'||(SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL),'DD-MON-YY')
AND TO_DATE(SYSDATE,'DD-MON-YY');
''01 -OCT-2015''是一个字符串,不是日期 - 唯一的办法就是如果将NLS_DATE_FORMAT设置为DD-MON-YYYY,但是如果它不是或者它被改变那么它将无法工作。 – MT0
除了NLS问题之外,这似乎不太可能是个人想要的。如果在给定年份的10月1日之前的任何时候运行此操作,则不会得到任何结果(假设您的NLS设置允许查询运行)。这似乎不太可能是预期的结果 –
谢谢,对不起,我没有测试它。我已经修复并测试了它,按预期工作。如果你喜欢它,请竖起大拇指。 – user3224907
什么ü上面推断是不正确的。你已经给出了'01 -oct-15'的日期,并且你想运行相同的查询而不改变下一年的日期 。你认为结果会是什么? U将会从'01 -oct-15'获得记录,每年你都会在同一年中运行不是特定月份的查询!
正如你上面所说的,你似乎只需要在同一年的指定月份的记录,但每年都不需要相同的'01 -oct-15'。
如果U之间需要2个月(前)和TODAY,使用下面查询记录,
SELECT *
FROM details n
WHERE EXISTS (SELECT p.nhno
FROM patient p
WHERE p.fname = 'James'
AND p.surname = 'Gump'
AND p.nhno = n.nhno
AND p.daterecorded BETWEEN ADD_MONTHS(SYSDATE, -2) AND TO_CHAR(SYSDATE, 'dd-mon-yy'));
如果U之间需要2个月(后),TODAY纪录,更换BETWEEN STATEMENT在上面的查询WITH ,
'BETWEEN ADD_MONTHS(SYSDATE, 2) AND TO_CHAR(SYSDATE, 'dd-mon-yy'))'
U还可以在'add_months'中将此查询更改为您需要的指定月份。 说,如果u要6个月(前)和当前日期之间的记录,
'BETWEEN ADD_MONTHS(SYSDATE, -6) AND TO_CHAR(SYSDATE, 'dd-mon-yy'))'
U可以每年都没有任何改变运行此查询。
这应该做到这一点。如果没有,请回到我身边。
我不明白这个问题。 “指定月份”与当前日期有什么关系?例如,你想要在两个月前和今天午夜之间的月份的第一个月之间搜索行吗? –
对不起,基本上这一年必须从sysdate – BigAl1992
仍然没有关注。在你的问题中,你有谓词'BETWEEN '01 -OCT-15'和to_char(sysdate,'dd-mon-yy')'。我认为这就是我们正在谈论的。我的猜测是,您正试图想出一种方法来根据当前日期计算2015年10月1日午夜的日期。这就是为什么我问你算法是什么。你想在2个月前的这个月的第一个月?本季度的第一个?还有别的吗? –