首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编号(8)列的ORA-01861错误

编号(8)列的ORA-01861错误
EN

Stack Overflow用户
提问于 2017-04-13 17:57:37
回答 2查看 98关注 0票数 0

我有下面的SQL,它基本上检查" SYSDATE“是否在特定日期之间(即某些日期<= SYSDATE <= (一些日期+ 30天))。

代码语言:javascript
运行
复制
TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD')) BETWEEN TO_DATE(TO_CHAR(T1.WEB_STR_DT, 'YYYYMMDD')) AND
    TO_DATE(TO_CHAR(T1.WEB_STR_DT, 'YYYYMMDD')) + 30

我面临的问题是,我得到ORA-01861,即使日期是有效的日期格式(Yyyymmdd)。

造成这一错误的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-13 18:15:09

您根本不应该将sysdate转换为字符串或从字符串转换,因为这是浪费的,但也是在执行隐式转换--这就是导致ORA-018611错误的原因。您的NLS_DATE_FORMAT不是YYYYMMDD;您显式地将日期转换为该格式,然后尝试使用当前的NLS设置将结果字符串转换回日期:

代码语言:javascript
运行
复制
select to_date(to_char(sysdate, 'YYYYMMDD')) from dual;

ORA-01861: literal does not match format string

select to_date(to_char(sysdate, 'YYYYMMDD'), 'YYYYMMDD') from dual;

TO_DATE(T
---------
13-APR-17

但是,您可以使用trunc(sysdate)来代替它。这就剥夺了回到午夜的时间,所以如果WEB_STR_DT今天代表的话,它就会匹配。

但这不是唯一的问题。首先,您不应该将日期存储为数字,但如果必须将像20170413这样的数字转换为日期,则需要先将其转换为字符串,然后将该字符串转换为日期。

本质上,您把括号放在了错误的位置,而不是

代码语言:javascript
运行
复制
TO_DATE(TO_CHAR(T1.WEB_STR_DT, 'YYYYMMDD'))

你应该:

代码语言:javascript
运行
复制
TO_DATE(TO_CHAR(T1.WEB_STR_DT), 'YYYYMMDD')

您的代码执行的等效于:

代码语言:javascript
运行
复制
select to_date(to_char(20170413, 'YYYYMMDD')) from dual;

ORA-01481: invalid number format model

因为您试图使用日期格式模型元素将数字转换为字符串。随着括号的移动,您将得到相应的日期。

所以,你可以:

代码语言:javascript
运行
复制
TRUNC(SYSDATE) BETWEEN TO_DATE(TO_CHAR(T1.WEB_STR_DT), 'YYYYMMDD')
  AND TO_DATE(TO_CHAR(T1.WEB_STR_DT), 'YYYYMMDD') + 30

即使是显式的TO_CHAR()调用也有点不必要,因为您没有为这些调用提供格式模型,因此更简单的方法是:

代码语言:javascript
运行
复制
TRUNC(SYSDATE) BETWEEN TO_DATE(T1.WEB_STR_DT, 'YYYYMMDD')
  AND TO_DATE(T1.WEB_STR_DT, 'YYYYMMDD') + 30
票数 1
EN

Stack Overflow用户

发布于 2017-04-13 18:00:14

号码转换问题(to_chat是什么?)我想你只是想在没有时间的情况下约会。

尝试TRUNC:

代码语言:javascript
运行
复制
WHERE trunc(sysdate) between trunc(T1.WEB_STR_DT) and trunc(T1.WEB_STR_DT)+30
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43398827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档