我有一个数据库表,其中一列的日期为 YYYYMM 格式。但是,我有一些条目只是 YYMM,我想将这些条目也更新为 YYYYMM - 所以本质上我需要识别记录,然后将它们更新为以“20”开头。 有没有快速的方法来做到这一点?
例如,我有 年年年号 202410 还有一些是 YYMM 2410
所以我想识别所有长度只有 4 位数字的条目,然后在前面插入“20”,这样它们都读取 2024MM
如果值只有 4 个字符,则在前面添加 20。
update tablename
set c1 = '20' || c1
where length(c1) = 4;
您可以将
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
作为初始格式模型。