如何更新表格中的日期格式

问题描述 投票:0回答:2

我有一个包含 10000 个日期的表,格式为 YYYY-MM-DD,列是 varchar2。 我如何将它们更新为格式 DD-MON-YYYY HH24:MI ? apex 中的申请的申请日期格式为 DD-MON-YYYY HH24:MI

我遇到错误 ORA-01843:不是有效的月份,因为日期格式不相同。

oracle plsql apex
2个回答
0
投票

如果您想更新 varchar2 日期类型中的同一列,您可以执行以下操作:

UPDATE tablename
SET    col_name = to_char(to_date(col_name, 'YYYY-MM-DD'), 'DD-MON-YYYY HH24:MI')

但是如果出现 ORA-01843 错误,您可以通过以下查询找到无效的月份:

SELECT * 
FROM   table_name
WHERE  substr (col_name, 6, 2) NOT IN ('01', '02, '03', '04', '05', '06', '07', '08', '09', '10', '11', '12')

然后你应该更正这些记录


0
投票

绝不将日期存储为字符串数据类型;始终使用最合适的格式,对于日期来说是

DATE
数据类型。

例如,如果您有样本数据:

INSERT INTO table_name (column_name)
SELECT '1970-01-01' FROM DUAL UNION ALL
SELECT '1999-12-31' FROM DUAL UNION ALL
SELECT '2024-04-29' FROM DUAL;

然后您可以创建第二列并使用以下方法填充它:

ALTER TABLE table_name ADD column_name_dt DATE;

UPDATE table_name
SET column_name_dt = TO_DATE(column_name, 'YYYY-MM-DD');

然后验证数据是否正确并删除第一列并重命名:

ALTER TABLE table_name DROP COLUMN column_name;

ALTER TABLE table_name RENAME COLUMN column_name_dt TO column_name;

然后,该表包含:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI';

SELECT * FROM table_name;
COLUMN_NAME
1970 年 1 月 1 日 00:00
1999 年 12 月 31 日 00:00
2024 年 4 月 29 日 00:00

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.