MySQL/Oracle数据库的字符串转日期、日期转字符串

 更新时间:2024年07月11日 10:20:51   作者:2019一路前行  
在许多数据库中,你可以使用内置的函数或操作符来进行字符串和日期之间的相互转换,这篇文章主要给大家介绍了关于MySQL/Oracle数据库的字符串转日期、日期转字符串的相关资料,需要的朋友可以参考下

MySQL、Oracle 的字符串、日期互转

MySQLOracle
字符串转日期STR_TO_DATE(str, format)TO_DATE(string, format)
日期转字符串DATE_FORMAT(date, format)TO_CHAR(date, format)

1 字符串转日期

1.1 MySQL 的 字符串转日期:STR_TO_DATE(str, format)

  • str: 要转换的字符串
  • format: 日期的格式,‘%Y-%m-%d %H:%i:%s’,‘%Y/%m/%d %H:%i:%s’

日期格式设置 - 或 /,返回的日期都是 -,
最基本的日期格式:‘%Y-%m-%d’、‘%Y/%m/%d’

参考案例:

SELECT STR_TO_DATE('2024-01-10', '%Y-%m-%d') FROM TEST1; -- 返回:2024-01-10
SELECT STR_TO_DATE('2024-01-10 10', '%Y-%m-%d') FROM TEST1; -- 返回:2024-01-10
SELECT STR_TO_DATE('2024-01-10 10:10', '%Y-%m-%d %H:%i:%s') FROM TEST1; -- 返回:2024-01-10 10:10:00
SELECT STR_TO_DATE('2024/01/10', '%Y/%m/%d') FROM TEST1; -- 返回:2024-01-10
SELECT STR_TO_DATE('2024/01/10', '%Y/%m/%d %H:%i:%s') FROM TEST1; -- 返回:2024-01-10 00:00:00
SELECT STR_TO_DATE('2024-01', '%Y-%m') FROM TEST1; -- 返回:NULL
SELECT STR_TO_DATE('2024-01-10', '%Y/%m/%d') FROM TEST1; -- 返回:NULL

注意事项:

(1)字符串的日期是 - 或 /,日期格式要设置成一样的,否则会返回空。

(2)必须精确到日,如果日期格式只有年月,则会返回空。

(3)时分秒 是否返回由日期格式控制。

1.2 Oracle 的 字符串转日期:TO_DATE(string, format)

  • string: 要转换的字符串
  • format: 日期的格式,
    (‘YYYY-MM-DD hh24:MI:SS’、‘YYYY/MM/DD hh24:MI:SS’)

日期格式设置 - 或 /,返回的日期都是 -

参考案例:

SELECT TO_DATE('2024-01-10', 'YYYY-MM-DD') FROM TEST1; -- 返回:2024-01-10 00:00:00
SELECT TO_DATE('2024-01-10 10:10', 'YYYY-MM-DD hh24:MI:SS') FROM TEST1; -- 返回:2024-01-10 10:10:00
SELECT TO_DATE('2024/01/10', 'YYYY/MM/DD') FROM TEST1; -- 返回:2024-01-10 00:00:00
SELECT TO_DATE('2024/01/10', 'YYYY/MM/DD hh24:MI:SS') FROM TEST1; -- 返回:2024-01-10 00:00:00
SELECT TO_DATE('2024', 'YYYY') FROM TEST1; -- 返回:2024-01-01 00:00:00

注意事项:不管日期格式是否设置到秒,返回的日期都精确到秒。

字符串和日期格式最好匹配一致,日期格式不精确到日也会返回数据,对应的值会是默认的。

2 日期转字符串

2.1 MySQL 的 日期转字符串:DATE_FORMAT(date, format)

  • date: 要转换的日期
  • format: 日期的格式,‘%Y-%m-%d %H:%i:%s’,‘%Y/%m/%d %H:%i:%s’

日期格式设置 - 或 /,返回的字符串则是 - 或 /,

最基本的日期格式:‘%Y-%m-%d’、‘%Y/%m/%d’

参考案例:

SELECT DATE_FORMAT('2024-01-10', '%Y-%m-%d') FROM TEST1; -- 返回:2024-01-10
SELECT DATE_FORMAT('2024-01-10 10:10:10', '%Y-%m-%d %H:%i:%s') FROM TEST1; -- 返回:2024-01-10 10:10:10
SELECT DATE_FORMAT('2024/01/10', '%Y/%m/%d') FROM TEST1; -- 返回:2024/01/10
SELECT DATE_FORMAT('2024/01/10', '%Y/%m/%d %H:%i:%s') FROM TEST1; -- 返回:2024/01/10 00:00:00
SELECT DATE_FORMAT('2024-01', '%Y-%m') FROM TEST1; -- 返回:NULL
SELECT DATE_FORMAT('2024-01-10', '%Y/%m/%d') FROM TEST1; -- 返回:2024/01/10

注意事项:必须精确到日,如果日期格式只有年月,则会返回空。返回的字符串由日期格式控制。

2.2 Oracle 的 日期转字符串:TO_CHAR(date, format)

  • date: 要转换的日期
  • format: 日期的格式,
    (‘YYYY-MM-DD hh24:MI:SS’、‘YYYY/MM/DD hh24:MI:SS’)

参考案例:

SELECT TO_CHAR(TO_DATE('2024-01-10', 'YYYY-MM-DD'), 'YYYY-MM-DD') FROM TEST1; -- 返回:2024-01-10
SELECT TO_CHAR(TO_DATE('2024-01-10 10:10', 'YYYY-MM-DD hh24:MI'), 'YYYY-MM-DD hh24:MI:SS') FROM TEST1; -- 返回:2024-01-10 10:10:00
SELECT TO_CHAR(TO_DATE('2024/01/10', 'YYYY/MM/DD'), 'YYYY/MM/DD') FROM TEST1; -- 返回:2024/01/10
SELECT TO_CHAR(TO_DATE('2024/01/10', 'YYYY/MM/DD'), 'YYYY/MM/DD hh24:MI:SS') FROM TEST1; -- 返回:2024/01/10 00:00:00
SELECT TO_CHAR(TO_DATE('2024', 'YYYY'), 'YYYY') FROM TEST1; -- 返回:2024

注意事项:要转换的日期必须是日期类型,返回的字符串由日期格式控制。

总结

到此这篇关于MySQL/Oracle数据库的字符串转日期、日期转字符串的文章就介绍到这了,更多相关MySQL/Oracle字符串和日期互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL慢查询优化从30秒到300毫秒的完整过程

    MySQL慢查询优化从30秒到300毫秒的完整过程

    文章介绍了如何优化一个响应时间为30秒的SQL接口,将响应时间优化到300毫秒的过程,通过开启慢查询日志、分析SQL执行计划、添加联合索引和优化查询技巧等步骤,解决了慢查询问题,文章还分享了索引设计原则、实用工具和远程数据库排查技巧,需要的朋友可以参考下
    2025-12-12
  • MySQL 连接查询的原理和应用

    MySQL 连接查询的原理和应用

    这篇文章主要介绍了MySQL 连接查询的原理和应用,帮助大家更好的理解和学习MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL实现行列转换

    MySQL实现行列转换

    这篇文章介绍了MySQL实现行列转换的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • MySQL线上使用经验分享(附详细代码)

    MySQL线上使用经验分享(附详细代码)

    在数据库日常运维中,DBA经常会遇到各种线上问题,这篇文章主要介绍了MySQL线上使用经验分享的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-02-02
  • MySQL数据库误删数据该怎么解决(这里有救!)

    MySQL数据库误删数据该怎么解决(这里有救!)

    在日常运维工作中,对于mysql数据库的备份是至关重要的,下面这篇文章主要介绍了MySQL数据库误删数据该怎么解决的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • 通过sysbench工具实现MySQL数据库的性能测试的方法

    通过sysbench工具实现MySQL数据库的性能测试的方法

    sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。这篇文章主要介绍了通过sysbench工具实现MySQL数据库的性能测试 ,需要的朋友可以参考下
    2019-07-07
  • 关于mysql 8.x 中insert ignore的性能问题

    关于mysql 8.x 中insert ignore的性能问题

    这篇文章主要介绍了关于mysql 8.x 中insert ignore的性能问题,具有很好的参考价值,希望对大家有所帮助。
    2022-08-08
  • 揭秘SQL优化技巧 改善数据库性能

    揭秘SQL优化技巧 改善数据库性能

    这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础,重点讲述如何优化SQL,来提高数据库的性能
    2012-01-01
  • MySQL DQL从入门到精通

    MySQL DQL从入门到精通

    通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQL DQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小编一起看看吧
    2025-06-06
  • Mysql覆盖表中重复记录的两种实现方式

    Mysql覆盖表中重复记录的两种实现方式

    replaceinto和onduplicatekeyupdate这两种方式都需要表中存在主键或者唯一索引,前者会先删除再插入,后者则直接更新,如果没有主键或唯一索引,则两者都相当于insertinto操作
    2026-04-04

最新评论