繁体   English   中英

更新 Oracle SQL 表中的日期

[英]Updating a date in Oracle SQL table

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

Select ASOFDATE from PASOFDATE;

我得到 4/16/2012

我尝试运行此查询

UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';

但它不起作用。

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

这是基于以下假设:您收到有关日期格式的错误,例如无效的月份值或预期为数字时的非数字字符。

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

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

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

UPDATE PASOFDATE SET ASOFDATE = TO_DATE('11/21/2012', 'MM/DD/YYYY');

由于您没有指定时间组件 - 所有 Oracle DATE列都包含时间,即使是午夜 - 您也可以使用日期文字

UPDATE PASOFDATE SET ASOFDATE = DATE '2012-11-21';

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

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

update user set expiry_date=TO_DATE('31/DEC/2017 12:59:59', 'dd/mm/yyyy hh24:mi:ss') where id=123;

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

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

只是为了补充 Alex Poole 的答案,以下是您如何处理日期和时间:

    TO_DATE('31/DEC/2017 12:59:59', 'dd/mm/yyyy hh24:mi:ss')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM