在MySQL中,如何按用户指定的格式显示时间?
在MySQL中,时间戳是以UTC时间戳的形式存储的。但是,当我们需要将时间戳以用户指定的格式显示时,我们可以使用MySQL提供的DATE_FORMAT函数。
阅读更多:MySQL 教程
DATE_FORMAT函数
DATE_FORMAT函数可以按照用户指定的格式将日期/时间类型的数据格式化为一个字符串。它的基本语法如下:
DATE_FORMAT(date, format)
其中,date参数可以是一个日期/时间列也可以是一个日期/时间表达式。format参数是一个字符串,用于指定返回的时间格式。
下面是一些常用的format参数:
字符 | 说明 |
---|---|
%M | 月份的英文全称(January-December) |
%m | 月份的数字表示(00-12) |
%W | 星期的英文全称(Sunday-Saturday) |
%w | 星期的数字表示(0-6) |
%d | 月份中的第几天(00-31) |
%e | 月份中的第几天(0-31) |
%Y | 年份,四位数字表示 |
%y | 年份,两位数字表示 |
%H | 小时,24小时制,00-23 |
%h | 小时,12小时制,00-12 |
%i | 分钟,00-59 |
%s | 秒数,00-59 |
%p | 上午(AM)或下午(PM) |
例子:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
-- 返回当前时间的格式是"年-月-日 时:分:秒"
输出:
+--------------------------------+
| DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') |
+--------------------------------+
| 2022-02-23 19:56:31 |
+--------------------------------+
另外,DATE_FORMAT函数也支持自定义format参数。例如,要将日期格式化为YYYY年M月D日,可以使用以下语句:
SELECT DATE_FORMAT(CURRENT_DATE(), "%Y年%M月%D日");
-- 返回当前日期的格式是“年月日”
输出:
+----------------------------------+
| DATE_FORMAT(CURRENT_DATE(), "%Y年%M月%D日") |
+----------------------------------+
| 2022年02月23日 |
+----------------------------------+
但是,需要注意的是,当用户指定的format参数无法正确解析时,DATE_FORMAT函数会返回NULL。
UNIX_TIMESTAMP函数
如果我们需要将一个日期时间字符串转换为时间戳,可以使用MYSQL的UNIX_TIMESTAMP函数。UNIX_TIMESTAMP函数可以将日期/时间类型的数据转换为对应的Unix时间戳。它的基本语法如下:
UNIX_TIMESTAMP(date)
其中,date参数可以是一个日期/时间列也可以是一个日期/时间表达式。
例如:
SELECT UNIX_TIMESTAMP('2022-02-23');
-- 返回值是日期'2022-02-23'相应的时间戳
输出:
+------------------------+
| UNIX_TIMESTAMP("2022-02-23") |
+------------------------+
| 1645574400 |
+------------------------+
FROM_UNIXTIME函数
FROM_UNIXTIME函数可以将UNIX时间戳或Unix时间戳表达式转换为一个时间日期字符串。它的基本语法如下:
FROM_UNIXTIME(unix_timestamp, format)
其中,unix_timestamp参数是一个Unix时间戳,format参数是一个字符串,用于指定返回时间日期的格式。
例如:
SELECT FROM_UNIXTIME(1645574400, '%Y-%m-%d %H:%i:%s');
-- 返回Unix时间戳对应的日期表示
输出:
+------------------------------------------------+
| FROM_UNIXTIME(1645574400, '%Y-%m-%d %H:%i:%s') |
+------------------------------------------------+
| 2022-02-23 00:00:00 |
+------------------------------------------------+
总结
MySQL提供了很多函数可以方便地将时间戳按用户指定的格式显示。DATE_FORMAT函数可以根据用户指定的format参数将日期时间类型格式化为一个字符串,UNIX_TIMESTAMP函数可以将日期时间字符串转换为对应的Unix时间戳,而FROM_UNIXTIME函数可以将Unix时间戳转换为指定格式的日期时间字符串。
使用这些函数,我们可以轻松地在MySQL中按用户指定的格式显示时间。