Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中打印每年的最后一个星期日_Sql_Oracle - Fatal编程技术网

Sql 如何在Oracle中打印每年的最后一个星期日

Sql 如何在Oracle中打印每年的最后一个星期日,sql,oracle,Sql,Oracle,我需要打印一年中的最后一个星期日,从中加上7将得到明年的所有星期日 如果我有开始日期,我有代码打印特定年份的所有星期日,但我需要用户输入年份,以便生成上一年的最后一个星期日,并添加7以获得该年的第一个星期日,依此类推,直到它到达下一年的最后一个星期日 例如,输入年份为2017年,它将检查2016年的最后一个星期日,并向其添加7以获得2017年的第一个星期日,即2017年1月1日,它将继续打印所有星期日,直到2017年12月31日。函数next_day()包含两个参数:日期和一周中某一天的名称。它

我需要打印一年中的最后一个星期日,从中加上7将得到明年的所有星期日

如果我有开始日期,我有代码打印特定年份的所有星期日,但我需要用户输入年份,以便生成上一年的最后一个星期日,并添加7以获得该年的第一个星期日,依此类推,直到它到达下一年的最后一个星期日


例如,输入年份为2017年,它将检查2016年的最后一个星期日,并向其添加7以获得2017年的第一个星期日,即2017年1月1日,它将继续打印所有星期日,直到2017年12月31日。

函数
next_day()
包含两个参数:日期和一周中某一天的名称。它返回与一周中给定日期最接近的“下一天”(在date参数之后)。所以结果是在一到七天之间。(如果需要“星期二”,且输入日期为星期二,则函数将在七天后返回该日期。)

如果你想要一年中的最后一个星期日,它将在12月25日到12月31日之间。因此,如果您使用参数Dec.24(!!)和'Sunday'调用
next_day()
函数,您将得到想要的结果

结果将具有与date参数相同的日期时间,因此如果您给出的日期没有日期时间,那么输出也将具有相同的时间(这可能是您想要的)。因此:

添加了:如果您接受用户的输入,作为绑定变量,您可以执行以下操作:

select next_day(to_date(:input_year - 1 || '-12-24', 'yyyy-mm-dd'), 'Sunday') from dual;

如果您提供2017作为输入(无论您的接口有什么绑定变量的机制),输出将是2016-12-25(在日期数据类型中,所以不要问“以什么格式”-日期没有格式!)

可以完成。但是,请分享你迄今为止所做的工作。如果你在一年的最后一个星期天加上7,你是如何得到那一年的所有星期天的?你是说明年的比赛吗?或者你是说你需要一年中的第一个星期天?嗨,我还没做完。。只是我需要接受一年的用户。。例如输入年份:2014年产出:1。2013年最后一个星期日2.2014年第一个星期日3.2014年第二个星期日4.2014年第三个星期日。等等etc@mathguy很抱歉,如我所说,如果我输入2016年为2015年的最后一个星期日,加上7,我将得到2016年的第一个星期日。。I’我无法为您生成代码it@RogueCoder请解释一下我说过我需要一年中的最后一个星期日,如果我把2017年作为输入,那么2016年的最后一个星期日应该打印出来,这是2016年12月25日如果你输入2017年,那么
:输入\u year-1
是2016年
| |
是连接运算符(添加更多文本)。额外的文本是
12-24
(一个固定字符串:我总是需要精确的12月24日的计算日期)。因此字符串变为
'2016-12-24'
,它由
to_date()
生成一个日期。因此,如果您给出2017年,这将自动创建日期
2016-12-24
,并将其用于计算2016年最后一个星期日的日期,如答案前面部分所述。
select next_day(to_date(:input_year - 1 || '-12-24', 'yyyy-mm-dd'), 'Sunday') from dual;