MySQL 如何在MySQL中重新格式化日期时间
在MySQL中存储日期和时间的格式有很多种,例如:
- YYYY-MM-DD HH:MM:SS
- YYYY-MM-DD
- HH:MM:SS
如果需要重新格式化存储的日期时间,可以使用MySQL中的日期时间函数来实现。
阅读更多:MySQL 教程
DATE_FORMAT函数
DATE_FORMAT函数可以将日期或时间类型的值按照指定的格式输出为字符串。
语法如下:
DATE_FORMAT(date,format)
其中,date是需要格式化的日期或时间值,format是指定日期或时间值将被转换成的格式。
例如,将一个日期时间值格式化为YYYY年MM月DD日 HH点mm分ss秒
的格式:
SELECT DATE_FORMAT('2022-09-30 20:45:30', '%Y年%m月%d日 %H点%i分%s秒');
输出结果:
+---------------------------------+
| DATE_FORMAT(sy, '%Y年%m月%d日 %H点%i分%s秒') |
+---------------------------------+
| 2022年09月30日 20点45分30秒 |
+---------------------------------+
动态格式化日期时间
如果需要将不同格式的日期时间值统一格式化,可以使用CONCAT和SUBSTR等函数来实现动态格式化。
例如,将一个日期时间值格式化为YYYY/MM/DD HH:MM:SS
的格式:
SELECT CONCAT(SUBSTR('2022-09-30 20:45:30', 1, 4), '/', SUBSTR('2022-09-30 20:45:30', 6, 2), '/', SUBSTR('2022-09-30 20:45:30', 9, 2), ' ', SUBSTR('2022-09-30 20:45:30', 12, 2), ':', SUBSTR('2022-09-30 20:45:30', 15, 2), ':', SUBSTR('2022-09-30 20:45:30', 18, 2));
输出结果:
+----------------------------------------+
| CONCAT(SUBSTR('2022-09-30 20:45:30', 1, 4), '/', SUBSTR('2022-09-30 20:45:30', 6, 2), '/', SUBSTR('2022-09-30 20:45:30', 9, 2), ' ', SUBSTR('2022-09-30 20:45:30', 12, 2), ':', SUBSTR('2022-09-30 20:45:30', 15, 2), ':', SUBSTR('2022-09-30 20:45:30', 18, 2)) |
+----------------------------------------+
| 2022/09/30 20:45:30 |
+----------------------------------------+
给日期时间加上时区偏移量
如果需要将日期时间值转换为另外一时区的日期时间值,可以使用CONVERT_TZ函数。
例如,将一个日期时间值从CST时区转换为UTC时区:
SELECT CONVERT_TZ('2022-09-30 20:45:30', '+08:00', 'UTC');
其中,第一个参数是需要转换的日期时间值,第二个参数是当前时区的偏移量,第三个参数是目标时区的标准时间偏移量。
输出结果:
+---------------------------------+
| CONVERT_TZ('2022-09-30 20:45:30', '+08:00', 'UTC') |
+---------------------------------+
| 2022-09-30 12:45:30 |
+---------------------------------+
将字符串转为日期时间类型
如果需要将字符串转换为日期时间类型,在MySQL 5.5之后可以使用STR_TO_DATE函数。
例如,将字符串2022-09-30 20:45:30
转换为日期时间类型:
SELECT STR_TO_DATE('2022-09-30 20:45:30', '%Y-%m-%d %H:%i:%s');
其中,第一个参数是需要转换的字符串,第二个参数是字符串的格式。
输出结果:
+---------------------+
| STR_TO_DATE('2022-09-30 20:45:30', '%Y-%m-%d %H:%i:%s') |
+---------------------+
| 2022-09-30 20:45:30 |
+---------------------+
将日期时间类型转为UNIX时间戳
如果需要将日期时间类型转换为UNIX时间戳,在MySQL 5.5之后可以使用UNIX_TIMESTAMP函数。
例如,将日期时间值2022-09-30 20:45:30
转换为UNIX时间戳:
SELECT UNIX_TIMESTAMP('2022-09-30 20:45:30');
输出结果:
+---------------------------+
| UNIX_TIMESTAMP('2022-09-30 20:45:30') |
+---------------------------+
| 1664636730 |
+---------------------------+
将UNIX时间戳转为日期时间类型
如果需要将UNIX时间戳转换为日期时间类型,在MySQL 5.5之后可以使用FROM_UNIXTIME函数。
例如,将UNIX时间戳1664636730
转换为日期时间类型:
SELECT DATE_FORMAT(FROM_UNIXTIME(1664636730), '%Y-%m-%d %H:%i:%s');
其中,FROM_UNIXTIME函数将UNIX时间戳转换为日期时间类型,DATE_FORMAT函数将日期时间类型格式化为指定格式的字符串。
输出结果:
+----------------------------------------------------+
| DATE_FORMAT(FROM_UNIXTIME(1664636730), '%Y-%m-%d %H:%i:%s') |
+----------------------------------------------------+
| 2022-09-30 20:45:30 |
+----------------------------------------------------+
结论
MySQL中可以使用日期时间函数和字符串函数来重新格式化存储的日期时间值,也可以进行时区转换、字符串转日期时间类型、日期时间类型转UNIX时间戳以及UNIX时间戳转日期时间类型等操作。掌握这些函数的使用,能够更加方便地进行日期时间的处理。