首页 > 解决方案 > 在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:

标签: sqloracledatetimewhere-clause

解决方案


您不需要转换为字符串并返回,您可以使用截断:

select * from table where date > trunc(sysdate,'WW')

阅读有关trunc()功能以及如何应用格式模型的更多信息。

请注意,WW 给您的日期与一年中的第一天相同,所以现在这将给您 2020-09-02,即星期三 - 可能不是您所期望的。这当然取决于您的要求,但您可能希望与总是从星期一开始的 IW 合作,并会给出 2020-09-07。如果您有不同的开始日期,您可以增加或减少一天,例如,如果您的一周从星期日开始。


推荐阅读