首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-01861:文字不匹配格式字符串使用oracle

ORA-01861:文字不匹配格式字符串使用oracle
EN

Stack Overflow用户
提问于 2020-11-30 14:37:40
回答 3查看 3.2K关注 0票数 0

我在oracle数据库中有数据字段,我需要更新我的数据字段,并使用add_months函数再添加3个月,如下所示,我的表名为psm_voucher。

代码语言:javascript
运行
复制
Name                            Null?    Type
------------------------------- -------- ----
BARCODE                                  VARCHAR2(20)
EXPDT                                    VARCHAR2(8)

Select barcode,expdt from psm_voucher where barcode='BBCV101670';

BARCODE              EXPDT
-------------------- --------
BBCV101670           20201231

然后,我尝试按下面的方式更新查询,但失败了

代码语言:javascript
运行
复制
Update psm_voucher set expdt=add_months(expdt,3) where barcode='BBCV101670';
update psm_voucher set expdt=add_months(expdt,3) where barcode='BBCV101670'
                                        *
ERROR at line 1:
ORA-01861: literal does not match format string

非常感谢您的好心帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-30 17:39:05

由于表中的日期存储为字符串,因此需要遵循一些基本步骤:

  • 转换字符串到日期
  • 将3个月添加到转换日期
  • 将日期转换回可存储在表中的字符串.

使用以下查询:

代码语言:javascript
运行
复制
update psm_voucher 
   set expdt= to_char(add_months(to_date(expdt,'YYYYMMDD'),3), 'YYYYMMDD')
 where barcode='BBCV101670'
票数 0
EN

Stack Overflow用户

发布于 2020-11-30 14:44:16

造成问题的根本原因是将日期存储为字符串。修复数据模型,因此EXPDT是一个date

那么你的代码就能工作了。

票数 0
EN

Stack Overflow用户

发布于 2020-11-30 15:34:53

您永远不应该依赖默认的字符串到日期的转换,这是您在将VARCHAR字符串传递给函数add_months时所做的工作。

代码语言:javascript
运行
复制
with dt as (
select '20201231' EXPDT from dual)
select
 add_months(expdt,3)
from dt;

此错误与ORA-01861: literal does not match format string有关,因为会话日期格式是存储字符串20201231的其他格式。

您必须使用正确的格式掩码来解释转换to_date,根据您的示例它是YYYYMMDD

代码语言:javascript
运行
复制
with dt as (
select '20201231' EXPDT from dual)
select
 add_months(to_date(expdt,'YYYYMMDD'),3)  as EXPDT_D
from dt;

EXPDT_D            
-------------------
31.03.2021 00:00:00

是的,在DATE格式列中存储日期时,会遇到较少的问题

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

https://stackoverflow.com/questions/65075561

复制
相关文章

相似问题

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