oracle to_date函数不接受格式

发布于 2024-10-20 17:10:39 字数 341 浏览 1 评论 0原文

当我在 oracle 10g 中执行此操作时:

select to_date(trunc(SOMEINPUTdATE)) from table1
where to_date(trunc(date_column_timestamp),'MM/DD/YYYY')
  >= to_date('03/11/2011' ,'MM/DD/YYYY')

我得到:ORA-01843: not a valid Month 如果我更改为:'YYYY/MM/DD',它就可以工作。 但是 'MM/DD/YYYY' 是有效的格式,对吧?

When I do this in oracle 10g:

select to_date(trunc(SOMEINPUTdATE)) from table1
where to_date(trunc(date_column_timestamp),'MM/DD/YYYY')
  >= to_date('03/11/2011' ,'MM/DD/YYYY')

I get: ORA-01843: not a valid month if I change to : 'YYYY/MM/DD', it works.
But 'MM/DD/YYYY' is a valid format right?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅的被狗咬 2024-10-27 17:10:39

你把事情搞混了一点。 TO_DATE 将字符串转换为 DATE。如果 date_column_timestamp 已经是日期,则无需将其转换为日期。

select trunc(SOMEINPUTdATE) from table1
where trunc(date_column_timestamp)
  >= to_date('03/11/2011' ,'MM/DD/YYYY')

ORA-01843 是由日期到字符串的隐式转换引起的。换句话说,以下内容:

to_date(trunc(date_column_timestamp),'MM/DD/YYYY')

相当于(假设默认日期格式 DD-MON-YYYY):

to_date(TO_CHAR(trunc(date_column_timestamp),'DD-MON-YYYY'),'MM/DD/YYYY')

因此,TO_CHAR 返回类似于 '11- MAR-2011',然后导致 to_date 失败,因为日期格式不匹配。

您的 select 子句中也存在同样的问题。您不需要在日期列的 trunc 周围添加 to_date

You're getting things mixed up a bit. TO_DATE converts a string into a DATE. If date_column_timestamp is already a date, you don't need to convert it to a date.

select trunc(SOMEINPUTdATE) from table1
where trunc(date_column_timestamp)
  >= to_date('03/11/2011' ,'MM/DD/YYYY')

The ORA-01843 is caused by the implicit conversion of a date to string. In other words, the following:

to_date(trunc(date_column_timestamp),'MM/DD/YYYY')

is equivalent to (assuming the default date format DD-MON-YYYY):

to_date(TO_CHAR(trunc(date_column_timestamp),'DD-MON-YYYY'),'MM/DD/YYYY')

So, the TO_CHAR returns something like '11-MAR-2011', which then causes to_date to fail because the date formats do not match.

The same problem exists in your select clause. You don't need to_date around a trunc of a date column.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文