gpt4 book ai didi

sql - ORA-01847 月份中的某一天必须介于 1 和月份最后一天之间 - 但数据正常

转载 作者:行者123 更新时间:2023-12-02 05:14:22 26 4
gpt4 key购买 nike

问题已解决 - 请参阅本文末尾。

当我在 select 子句中调用 to_date 时,一切正常 - 获得包含 12 条记录的结果集:

select value1,to_date(value1,'DD.MM.YYYY') 
from variableindex
where
value1 is not null
and value1 <> '0'
and creation_time_ > to_timestamp('20140307','YYYYMMDD')
order by 2

返回

'VALUE1'     'TO_DATE(VALUE1,'DD.MM.YYYY')'
'25.11.2013' 25.11.13
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'14.03.2014' 14.03.14
'14.03.2014' 14.03.14
'14.03.2014' 14.03.14
'14.03.2014' 14.03.14
'20.03.2014' 20.03.14
'20.03.2014' 20.03.14

每个日期字符串都已按预期进行转换。

如果我将以下行添加到 where 子句

and to_date(value1,'DD.MM.YYYY') < to_date('20140301','YYYYMMDD')

我会收到:

ORA-01847: Tag des Monats muss zwischen 1 und letztem Tag des Monats liegen
01847. 00000 - "day of month must be between 1 and last day of month"
*Cause:
*Action:

不,这真的很糟糕......我将查询更改为

where id_ in (...)

并使用与原始查询中相同的 12 个记录集 ID。没有错误...

非常感谢@GordonLinoff - 这就是我现在使用查询的方式:

select value1,to_date(value1,'DD.MM.YYYY') from variableindex 
where
(case when value1 <> '0' then to_date(value1,'DD.MM.YYYY') end) > to_timestamp('20131114','YYYYMMDD')
and creation_time_ > to_timestamp('20140307','YYYYMMDD')
order by 2;

最佳答案

这是您使用 where 进行的查询子句:

select value1, to_date(value1,'DD.MM.YYYY') 
from variableindex
where value1 is not null and
value1 <> '0' and
creation_time_ > to_timestamp('20140307', 'YYYYMMDD') and
to_date(value1 'DD.MM.YYYY') < to_date('20140301', 'YYYYMMDD')
order by 2;

Oracle 不保证where 中子句的处理顺序。 。所以,value <> '0'不保证在最后一个条件之前运行。这恰好是 SQL Server 上的一个大问题。一种解决方案是使用 case声明:

select value1,to_date(value1, 'DD.MM.YYYY') 
from variableindex
where value1 is not null and
value1 <> '0' and
creation_time_ > to_timestamp('20140307', 'YYYYMMDD') and
(case when value <> '0' then to_date(value1, 'DD.MM.YYYY') end) <
to_date('20140301', 'YYYYMMDD')
order by 2;

相当丑陋,但它可能会解决你的问题。

关于sql - ORA-01847 月份中的某一天必须介于 1 和月份最后一天之间 - 但数据正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com