首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle /PL- ORA-01843:无效月份

Oracle /PL- ORA-01843:无效月份
EN

Stack Overflow用户
提问于 2021-12-20 16:25:33
回答 1查看 300关注 0票数 -1

我得到错误消息: ORA-01843:在执行sql脚本后的一个月内无效。

我尝试使用“标准”日期格式yyyy。

SQL/PL是否不理解alter语句?

代码语言:javascript
复制
set linesize 200
set pagesize 1000
alter session set NLS_NUMERIC_CHARACTERS = ',.';
alter session set NLS_DATE_FORMAT = 'yyyy-mm-dd';

select
 *
from my_table
where  
date >= '2019-08-31';

exit
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-20 18:25:06

在我看来,您需要的不是将日期值与字符串进行比较。

假设这里的date实际上代表一个DATE数据类型列(为什么不发布表描述?)(如前所述,不能这样命名列,除非将其名称括在双引号中)。

代码语言:javascript
复制
where date >= '2019-08-31'
      ----    ------------
      DATE     this is a string
    datatype

使用日期文字,它总是有一个DATE关键字和'yyyy-mm-dd'格式的日期

代码语言:javascript
复制
where date >= date '2019-08-31'

或者,使用具有适当格式掩码的to_date函数:

代码语言:javascript
复制
where date >= to_date('2019-08-31', 'yyyy-mm-dd')

如果date列(我们已经知道的名称错误)实际上包含字符串,并且您希望它们都遵循'yyyy-mm-dd'格式,那么有些值就不包含了。将日期存储到varchar2数据类型列中几乎总是一个坏主意。没有人阻止您将例如'2019-ac-31'存储到其中,而且这不是一个有效的日期值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70424923

复制
相关文章

相似问题

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