首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新Oracle SQL表中的日期

更新Oracle SQL表中的日期
EN

Stack Overflow用户
提问于 2012-11-21 23:59:29
回答 4查看 389.3K关注 0票数 32

我正在尝试更新SQL表中的日期。我正在使用Peoplesoft Oracle。当我运行此查询时:

代码语言:javascript
复制
Select ASOFDATE from PASOFDATE;

我得到2012年4月16日

我尝试运行此查询

代码语言:javascript
复制
UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';

但它不起作用。

有人知道我会如何将日期更改为所需的日期吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-22 00:11:31

这是基于这样的假设,即您得到一个关于日期格式的错误,例如一个无效的月值或非数字字符,而实际需要的是数字。

存储在数据库中的日期没有格式。当您查询日期时,客户端将日期设置为4/16/2011格式以供显示。通常,相同的日期格式用于选择和更新日期,但在这种情况下,它们似乎是不同的-因此您的客户端显然正在做一些比SQL*Plus更复杂的事情。

当您尝试更新它时,它使用的是默认的date format model。由于它的显示方式,您假设它是MM/DD/YYYY,但它似乎不是。您可以找出它是什么,但最好不要依赖默认或任何隐式格式模型。

无论这是不是问题所在,您都应该始终指定日期模型:

代码语言:javascript
复制
UPDATE PASOFDATE SET ASOFDATE = TO_DATE('11/21/2012', 'MM/DD/YYYY');

由于您没有指定时间组件-所有Oracle DATE列都包含一个时间,即使现在是午夜-您也可以使用date literal

代码语言:javascript
复制
UPDATE PASOFDATE SET ASOFDATE = DATE '2012-11-21';

您可能应该检查当前值是否不包括时间,尽管列名表明它不包括时间。

票数 89
EN

Stack Overflow用户

发布于 2020-03-12 20:54:44

下面是设置日期和时间的方法:

代码语言:javascript
复制
update user set expiry_date=TO_DATE('31/DEC/2017 12:59:59', 'dd/mm/yyyy hh24:mi:ss') where id=123;
票数 3
EN

Stack Overflow用户

发布于 2012-11-22 21:15:41

如果在任何peoplesoft特定代码(应用程序引擎、SQLEXEC、SQLfetch等)中使用此SQL。您可以在metaSQL中使用%Datein。Peopletools自动将日期转换为运行应用程序的数据库平台可以接受的格式。

如果使用此SQL从查询分析器(如SQLDeveloper、SQLTools)执行后端更新,则所使用的日期格式是错误的。Oracle要求日期格式为DD- MMM -YYYY,其中MMM可以是JAN、FEB、MAR等。

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

https://stackoverflow.com/questions/13497130

复制
相关文章

相似问题

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