Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL/Oracle字符串和日期互转

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

作者: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)

日期格式设置 - 或 /,返回的日期都是 -,
最基本的日期格式:‘%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)

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

参考案例:

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)

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

最基本的日期格式:‘%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)

参考案例:

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字符串和日期互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文