TO_TIMESTAMP函数使用问题:将NUMBER类型日期转为指定格式TIMESTAMP
解决方案
你当前的SQL存在两个核心问题:
- 转换逻辑有误:NUMBER类型的
NEW_DATE无法直接用TO_DATE(..., 'YYYY-MM-DD')转换——数字转字符串后不会带分隔符,比如数值20210118转字符串是'20210118',而非'2021-01-18',这会导致日期转换结果不符合预期。 - 输出格式未指定:
TIMESTAMP类型默认显示会包含时分秒部分,要得到18-JAN-2021的格式,必须用TO_CHAR函数明确指定输出样式。
正确转换并格式化的SQL
假设你的NEW_DATE存储的是YYYYMMDD格式的数字(比如20210118代表2021年1月18日),执行以下语句即可得到期望结果:
SELECT TO_CHAR(TO_TIMESTAMP(TO_CHAR(NEW_DATE), 'YYYYMMDD'), 'DD-MON-YYYY') AS formatted_timestamp FROM tw_edu_infra_amenities;
步骤拆解
TO_CHAR(NEW_DATE):把NUMBER类型的日期值转为字符串(如20210118→'20210118')TO_TIMESTAMP(..., 'YYYYMMDD'):将字符串转换为TIMESTAMP类型,此时时分秒默认补为0TO_CHAR(..., 'DD-MON-YYYY'):将TIMESTAMP按指定格式输出为DD-MON-YYYY样式的字符串
如果你的NEW_DATE是其他数字格式(比如YYYYMMDDHH24MISS),只需调整TO_TIMESTAMP中的格式参数匹配存储规则即可。
内容的提问来源于stack exchange,提问作者user21257954
相关产品推荐
相关产品推荐

