如何解决在oracle sql中将一年中的星期转换为日期
如何在Oracle SQL中使用一年中的星期几获取日期?
我需要搜索在本周开始之后创建的条目。目前,我通过select to_char(sysdate,'WW') from dual;
来完成一年中的某周,但后来我做不到
select * from table where date > to_date(to_char(sysdate,'WW'),'WW')
因为我得到了
ORA-01820: format code cannot appear in date input format
01820. 00000 - "format code cannot appear in date input format"
*Cause:
*Action:
解决方法
您无需转换为字符串然后返回,可以使用truncate:
select * from table where date > trunc(sysdate,'WW')
详细了解the trunc()
function和how the format model is applied。
请注意,WW给您的日期与一年中的第一天相同,所以现在将给您2020-09-02,也就是星期三-可能不是您期望的。当然,这取决于您的要求,但是您可能希望使用始终从星期一开始的IW,并且会给出2020-09-07。如果您有不同的开始日期,则可以增加或减少一天,例如如果您的一周从星期日开始。
,根据ORA-doc:
ORA-01820:格式代码不能以日期输入格式出现
原因:日期说明中包含无效的格式代码。输入日期时,只能指定以下内容:年,月,日,小时,分钟,秒,儒略日,> A.M./PM。和B.C./A.D。
操作:从日期规范中删除无效的格式代码。
您不能将Weeknum传递给to_date()函数。您可以做的是例如以下
select * from table where date > (next_day(trunc(sysdate),'SUNDAY') - 7)
基本上,next_day返回满足指定工作日的第一个日期。假设今天是2020-09-07,星期一,next_day将返回您最近的星期日,即2020-09-13,因此您需要减去7以获取当前星期的开始日期。 You can read more about it here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。