不是有效月份-在Oracle中使用日期

问题描述 投票:0回答:3

我发现在自定义环境中处理日期非常费力。我有一个要求添加一个满足特定日期的where子句的请求,但是我无法让oracle顺其自然。任何想法都可以。

 select created_date, cast(created_date as date)created_date_cast from mytable

 created_date                                  created_date_cast
 04-Mar-20 05.21.15.772000 AM                  3/4/2020 5:21:15 AM
 04-Mar-20 05.21.15.709000 AM                  3/4/2020 5:21:15 AM
 04-Mar-20 05.17.14.902000 AM                  3/4/2020 5:14:14 AM
 28-Feb-20 01.15.25.702700 AM                  2/28/2020 1:15:25 AM

[当我尝试添加where子句时,代码片段因错误而炸毁:

select created_date, cast(created_date as date)created_date_cast from mytable
where cast(created_date as date) <= '02/28/2020'

ORA-01843: not a valid month

我在from中也尝试过to_date(created_date, 'MM/DD/YYYY'),但事实证明是错误的:

ORA-01858: a non-numeric character was found where a numeric was expected
sql oracle
3个回答
0
投票

使用日期文字:

cast(created_date as date) <= date '2020-02-28'

[我也建议不要使用cast()-假设created_date正确存储为datetimestamp

created_date < (date '2020-02-28' + interval '1' day)

0
投票

您应该尝试类似的方法,用您自己的日期格式(我认为是MM / DD / YYYY)代替]

 WHERE TRUNC(mt.created_date) < TO_CHAR(SYSDATE,'YOUR_DATE_FORMAT')

0
投票

[首先转换为日期,将时间戳记值转换为日期值,然后别忘了添加trunc()函数以便也将边界值(date'2020-03-04')包括在内]

where trunc(cast(created_date as date)) <= date'2020-02-28'

© www.soinside.com 2019 - 2024. All rights reserved.