我发现在自定义环境中处理日期非常费力。我有一个要求添加一个满足特定日期的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
使用日期文字:
cast(created_date as date) <= date '2020-02-28'
[我也建议不要使用cast()
-假设created_date
正确存储为date
或timestamp
:
created_date < (date '2020-02-28' + interval '1' day)
您应该尝试类似的方法,用您自己的日期格式(我认为是MM / DD / YYYY)代替]
WHERE TRUNC(mt.created_date) < TO_CHAR(SYSDATE,'YOUR_DATE_FORMAT')
[首先转换为日期,将时间戳记值转换为日期值,然后别忘了添加trunc()
函数以便也将边界值(date'2020-03-04'
)包括在内]
where trunc(cast(created_date as date)) <= date'2020-02-28'