将数据库列中的某些 YYMM 条目更新为 YYYYMM

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

我有一个数据库表,其中一列的日期为 YYYYMM 格式。但是,我有一些条目只是 YYMM,我想将这些条目也更新为 YYYYMM - 所以本质上我需要识别记录,然后将它们更新为以“20”开头。 有没有快速的方法来做到这一点?

例如,我有 年年年号 202410 还有一些是 YYMM 2410

所以我想识别所有长度只有 4 位数字的条目,然后在前面插入“20”,这样它们都读取 2024MM

sql oracle
2个回答
3
投票

如果值只有 4 个字符,则在前面添加 20。

update tablename
set c1 = '20' || c1
where length(c1) = 4;

演示:https://dbfiddle.uk/jTscMdch


0
投票

您可以将

TO_DATE
与格式模型
RRMM
一起使用,然后将
TO_CHAR
与格式模型
YYYYMM
一起使用:

UPDATE table_name
SET    date_string = TO_CHAR(TO_DATE(date_string, 'RRMM'), 'YYYYMM')

如果您想将

UPDATE
限制为具有 4 位数字值的行,请添加:

WHERE  LENGTH(date_string) = 4;

对于样本数据:

CREATE TABLE table_name (date_string) AS
SELECT '2401' FROM DUAL UNION ALL
SELECT '2301' FROM DUAL UNION ALL
SELECT '202401' FROM DUAL UNION ALL
SELECT '192401' FROM DUAL UNION ALL
SELECT '9901' FROM DUAL;

然后,更新后,该表包含:

DATE_STRING
202401
202301
202401
192401
199901

如果您想将

9901
转换为
209901
,请使用
YYMM
而不是
RRMM
作为初始格式模型。

小提琴

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