MySQL 在MySQL中,如何使用FROM_UNIXTIME()函数进行格式化输出?
在MySQL中,我们可以使用FROM_UNIXTIME()函数将时间戳转换为具有指定格式的日期时间格式。FROM_UNIXTIME()函数需要一个时间戳参数,它是从Unix纪元(即1970年1月1日00:00:00 UTC)到目标日期时间的秒数。此外,我们还需要指定输出的日期时间格式。
下面是一个从时间戳到日期时间格式的转换示例:
SELECT FROM_UNIXTIME(1574169600, '%Y-%m-%d %H:%i:%s') AS datetime;
在上面的代码中,我们使用了两个参数来调用FROM_UNIXTIME()函数。第一个参数是时间戳,它的值是1574169600,表示2019年11月20日00:00:00。第二个参数是日期时间格式化字符串,它以%开头,并跟随一个或多个格式化选项。在本例中,我们使用了以下格式化选项:
- %Y:表示四位数的年份(例如2019)。
- %m:表示两位数的月份(例如11)。
- %d:表示两位数的日期(例如20)。
- %H:表示24小时制的小时数(例如00)。
- %i:表示两位数的分钟数(例如00)。
- %s:表示两位数的秒数(例如00)。
我们使用空格字符将日期和时间分开。
上述查询将返回以下结果:
+---------------------+
| datetime |
+---------------------+
| 2019-11-20 00:00:00 |
+---------------------+
阅读更多:MySQL 教程
更多日期时间格式化选项
我们不仅可以使用%Y、%m、%d、%H、%i和%s等基本格式选项来格式化日期时间,还可以添加其他格式选项来满足我们的需求。下面是一些常用的日期时间格式化选项及其含义:
- %W:表示星期几(例如Wednesday)。
- %w:表示星期几(0表示周日,1到6表示周一到周六)。
- %a:表示短时间格式的星期几(例如Wed)。
- %b或%B:表示月份的缩写或全称(例如Nov或November)。
- %c:表示月份(1到12)。
- %j:表示一年中的第几天(001到365或366)。
- %p:表示上午或下午(例如AM或PM)。
- %r:表示12小时制的时间(例如09:30:00 PM)。
- %T:表示24小时制的时间(例如21:30:00)。
- %U或%u:表示一年中的第几周(00到53)。
- %V或%v:表示ISO 8601认证的一年中的第几周(01到53)。
- %x或%X:表示短日期格式或长日期格式。
下面的示例使用不同的格式化选项来生成不同的日期时间格式:
SELECT FROM_UNIXTIME(1574169600, '%Y-%m-%d %H:%i:%s') AS datetime,
FROM_UNIXTIME(1574169600, '%W, %M %e, %Y') AS formatted_1,
FROM_UNIXTIME(1574169600, '%r, %B %d, %Y') AS formatted_2,
FROM_UNIXTIME(1574169600, '%a %c/%j/%Y') AS formatted_3
在上面的代码中,我们使用了不同的日期时间格式化选项来格式化同一个时间戳。我们将生成四个不同格式的日期时间字符串,分别用formatted_1、formatted_2和formatted_3来命名。我们可以看到,formatted_1生成的格式为星期几、月份和日期,formatted_2生成的格式为12小时制的时间、月份和日期,formatted_3生成的格式为星期几、月份、日期和年份。
上述查询将返回以下结果:
+---------------------+-------------------------+----------------------------+-------------------+
| datetime | formatted_1 | formatted_2 | formatted_3 |
+---------------------+-------------------------+----------------------------+-------------------+
| 2019-11-20 00:00:00 | Wednesday, November 20, 2019 | 09:00:00 PM, November 20, 2019 | Wed 11/324/2019 |
+---------------------+-------------------------+----------------------------+-------------------+
使用UNIX_TIMESTAMP()函数将日期时间转换为时间戳
除了将时间戳格式化为日期时间格式之外,我们还可以使用UNIX_TIMESTAMP()函数将日期时间格式转换为时间戳。UNIX_TIMESTAMP()函数接受一个日期时间字符串参数,并返回对应的时间戳(即从Unix纪元开始的秒数)。
下面是一个将日期时间格式转换为时间戳的示例:
SELECT UNIX_TIMESTAMP('2019-11-20 00:00:00') AS timestamp;
在上面的代码中,我们传递了一个日期时间字符串’2019-11-20 00:00:00’作为UNIX_TIMESTAMP()函数的参数。该函数将返回相应的时间戳,即1574169600。我们将使用AS关键字为结果集中的时间戳列命名为timestamp。
上述查询将返回以下结果:
+------------+
| timestamp |
+------------+
| 1574169600 |
+------------+
将UNIX_TIMESTAMP()和FROM_UNIXTIME()函数组合使用
在MySQL中,我们还可以将UNIX_TIMESTAMP()和FROM_UNIXTIME()函数组合使用,以将某个日期时间格式转换为具有另一种日期时间格式的日期时间字符串。从一个日期时间格式到另一个日期时间格式的转换逻辑如下:
日期时间字符串 -> 时间戳 -> 另一个日期时间字符串
下面是一个将日期时间格式从’2019-11-20 00:00:00’转换为’20-11-2019’的示例:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2019-11-20 00:00:00'), '%d-%m-%Y') AS formatted_date;
在上面的代码中,我们首先调用UNIX_TIMESTAMP()函数将日期时间字符串’2019-11-20 00:00:00’转换为时间戳。然后,我们使用FROM_UNIXTIME()函数将时间戳转换为具有’%d-%m-%Y’日期时间格式的日期时间字符串。我们将使用AS关键字为结果集中的日期时间列命名为formatted_date。
上述查询将返回以下结果:
+----------------+
| formatted_date |
+----------------+
| 20-11-2019 |
+----------------+
结论
在MySQL中,我们可以使用FROM_UNIXTIME()函数将时间戳格式化为特定的日期时间格式,以及使用UNIX_TIMESTAMP()函数将日期时间格式转换为时间戳。还可以将UNIX_TIMESTAMP()和FROM_UNIXTIME()函数组合使用,以将一个日期时间格式转换为具有不同日期时间格式的日期时间格式。在使用这些函数时,我们需要注意指定正确的日期时间格式化选项。
极客笔记