Oracle数据库中日期格式转换有哪些常用方法

来源:APP编程网作者:柬埔寨程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《Oracle数据库中日期格式转换有哪些常用方法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Oracle数据库中日期格式转换有哪些常用方法》有用,将其分享出去将是对创作者最好的鼓励。

在Oracle数据库的实际开发场景中,日期数据的存储和展示往往需要不同的格式,日期格式转换是解决这类需求的核心操作,主要通过内置的日期转换函数实现不同格式之间的转换适配。

Oracle数据库中日期格式转换有哪些常用方法

Oracle日期格式转换的核心函数

Oracle提供了两个最基础的日期转换函数,分别对应字符串转日期、日期转字符串的需求,这两个函数覆盖了绝大多数日期格式转换场景。

1. TO_DATE函数:字符串转日期

TO_DATE函数的作用是将符合特定格式的字符串转换为Oracle的日期类型(DATE),语法格式为TO_DATE(字符串, 格式掩码),其中格式掩码需要和字符串的实际格式完全匹配,否则会抛出转换错误。

常用的日期格式掩码元素包括:

  • YYYY:四位年份
  • MM:两位月份(01-12)
  • DD:两位日期(01-31)
  • HH24:24小时制的小时(00-23)
  • MI:分钟(00-59)
  • SS:秒(00-59)

下面是一个将字符串转为日期的示例代码:

-- 将字符串'2024-05-20 14:30:00'转为DATE类型
SELECT TO_DATE('2024-05-20 14:30:00', 'YYYY-MM-DD HH24:MI:SS') AS convert_result
FROM DUAL;

2. TO_CHAR函数:日期转字符串

TO_CHAR函数的作用是将DATE类型的日期数据转换为指定格式的字符串,语法格式为TO_CHAR(日期, 格式掩码),可以根据需求自定义输出字符串的格式。

示例代码如下:

-- 将当前系统日期转为'年-月-日 时:分:秒'格式的字符串
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS date_str
FROM DUAL;

-- 将日期转为中文格式的字符串
SELECT TO_CHAR(TO_DATE('2024-05-20', 'YYYY-MM-DD'), 'YYYY"年"MM"月"DD"日"') AS cn_date_str
FROM DUAL;

不同场景的日期转换示例

场景1:前端传入字符串日期存入数据库

前端传入的日期字符串格式通常为'yyyy/MM/dd',需要转换为Oracle DATE类型后存入表字段,转换代码如下:

-- 插入数据时转换字符串日期
INSERT INTO user_info (user_id, register_date)
VALUES (1001, TO_DATE('2024/05/20', 'YYYY/MM/DD'));

场景2:查询时按指定格式展示日期

数据库存储的DATE类型日期默认展示格式不符合需求时,可以用TO_CHAR转换后展示:

-- 查询用户注册日期,按'MM/DD/YYYY'格式展示
SELECT user_id, TO_CHAR(register_date, 'MM/DD/YYYY') AS register_date_str
FROM user_info
WHERE user_id = 1001;

场景3:不同日期格式之间的转换

如果需要将一种格式的日期字符串转为另一种格式的字符串,可以先转为DATE类型,再转为目标格式的字符串:

-- 将'20-05-2024'格式的字符串转为'2024年05月20日'格式
SELECT TO_CHAR(
    TO_DATE('20-05-2024', 'DD-MM-YYYY'),
    'YYYY"年"MM"月"DD"日"'
) AS target_date_str
FROM DUAL;

日期转换的注意事项

在进行日期格式转换时,需要注意以下几点避免出错:

  • 格式掩码的大小写敏感,比如MM表示月份,mm表示分钟,使用错误会导致转换结果不符合预期
  • 字符串的实际内容和格式掩码必须完全匹配,比如字符串是'2024-5-20',格式掩码不能写'YYYY-MM-DD',因为月份和日期只有一位,需要对应使用'YYYY-M-D'
  • 如果转换的字符串包含时分秒,格式掩码必须包含对应的时间元素,否则时分秒部分会被截断为0
  • 处理空值或者非法日期字符串时,可以结合NVL或者CASE WHEN语句做容错处理,避免转换报错导致查询中断

下面是一个容错处理的示例代码:

-- 处理可能为空的日期字符串,为空时返回NULL
SELECT 
    CASE 
        WHEN date_str IS NOT NULL THEN TO_DATE(date_str, 'YYYY-MM-DD')
        ELSE NULL 
    END AS convert_date
FROM (
    SELECT '2024-05-20' AS date_str FROM DUAL
    UNION ALL
    SELECT NULL AS date_str FROM DUAL
);

Oracle日期格式转换TO_DATETO_CHAR日期函数修改时间:2026-07-24 07:48:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。