MySQL 格式化时间戳
概述
在数据库中,经常需要存储和处理时间相关的数据。MySQL 提供了多种函数和方法来处理时间戳,使得我们可以轻松地格式化时间戳以满足我们的需求。
本文将详细介绍 MySQL 中如何格式化时间戳,包括日期格式化、时间格式化、日期时间格式化等。我们将逐步介绍不同的函数和方法,并给出相应的示例代码和运行结果。
日期格式化
在数据库中,日期通常以日期格式存储。MySQL 提供了 DATE_FORMAT
函数来格式化日期。
语法如下:
DATE_FORMAT(date, format)
其中,date
是一个日期或日期时间值,format
是一个字符串,用于指定日期的格式。
下表列出了常用的日期格式选项:
格式选项 | 说明 | 示例 |
---|---|---|
%Y | 四位数的年份 | 2019 |
%y | 两位数的年份 | 19 |
%M | 月份的英文全名 | January |
%b | 月份的英文缩写 | Jan |
%m | 两位数的月份 | 01 |
%d | 两位数的日期 | 01 |
%e | 日期,不含前导零 | 1 |
%W | 星期的英文全名 | Monday |
%a | 星期的英文缩写 | Mon |
%w | 星期的数字表示,0-6 | 1 |
%H | 24 小时制的小时 | 13 |
%h | 12 小时制的小时 | 01 |
%i | 两位数的分钟 | 30 |
%s | 两位数的秒钟 | 05 |
%p | AM 或 PM | PM |
%r | 12 小时制的时间 | 01:30:05 PM |
%T | 24 小时制的时间 | 13:30:05 |
%c | 月份的数字表示,1-12 | 1 |
%j | 一年中的第几天,三位数 | 001 |
%U | 一年中的第几周,两位数 | 01 |
以下是一些常用的日期格式化示例:
SELECT DATE_FORMAT('2019-01-01', '%Y-%m-%d'); -- 输出:2019-01-01
SELECT DATE_FORMAT('2019-01-01', '%d/%m/%Y'); -- 输出:01/01/2019
SELECT DATE_FORMAT('2019-01-01', '%M %d, %Y'); -- 输出:January 01, 2019
SELECT DATE_FORMAT('2019-01-01', '%d %b, %Y'); -- 输出:01 Jan, 2019
SELECT DATE_FORMAT('2019-01-01', '%a, %M %d'); -- 输出:Tue, January 01
时间格式化
类似日期格式化,MySQL 也提供了 TIME_FORMAT
函数来格式化时间。
语法如下:
TIME_FORMAT(time, format)
其中,time
是一个时间值,format
是一个字符串,用于指定时间的格式。
下表列出了常用的时间格式选项:
格式选项 | 说明 | 示例 |
---|---|---|
%H | 24 小时制的小时 | 13 |
%h | 12 小时制的小时 | 01 |
%i | 两位数的分钟 | 30 |
%s | 两位数的秒钟 | 05 |
%p | AM 或 PM | PM |
%r | 12 小时制的时间 | 01:30:05 |
%T | 24 小时制的时间 | 13:30:05 |
以下是一些常用的时间格式化示例:
SELECT TIME_FORMAT('13:30:05', '%H:%i'); -- 输出:13:30
SELECT TIME_FORMAT('13:30:05', '%h:%i %p'); -- 输出:01:30 PM
SELECT TIME_FORMAT('13:30:05', '%r'); -- 输出:01:30:05 PM
SELECT TIME_FORMAT('13:30:05', '%T'); -- 输出:13:30:05
日期时间格式化
除了日期和时间的单独格式化,有时我们还需要对日期时间值进行格式化。MySQL 提供了 DATE_FORMAT
函数来同时格式化日期和时间。
语法如下:
DATE_FORMAT(datetime, format)
其中,datetime
是一个日期时间值,format
是一个字符串,用于指定日期时间的格式。
下表列出了常用的日期时间格式选项:
格式选项 | 说明 | 示例 |
---|---|---|
%Y | 四位数的年份 | 2019 |
%y | 两位数的年份 | 19 |
%M | 月份的英文全名 | January |
%b | 月份的英文缩写 | Jan |
%m | 两位数的月份 | 01 |
%d | 两位数的日期 | 01 |
%e | 日期,不含前导零 | 1 |
%W | 星期的英文全名 | Monday |
%a | 星期的英文缩写 | Mon |
%w | 星期的数字表示,0-6 | 1 |
%H | 24 小时制的小时 | 13 |
%h | 12 小时制的小时 | 01 |
%i | 两位数的分钟 | 30 |
%s | 两位数的秒钟 | 05 |
%p | AM 或 PM | PM |
%r | 12 小时制的时间 | 01:30:05 PM |
%T | 24 小时制的时间 | 13:30:05 |
%c | 月份的数字表示,1-12 | 1 |
%j | 一年中的第几天,三位数 | 001 |
%U | 一年中的第几周,两位数 | 01 |
以下是一些常用的日期时间格式化示例:
SELECT DATE_FORMAT('2019-01-01 13:30:05', '%Y-%m-%d %H:%i:%s'); -- 输出:2019-01-01 13:30:05
SELECT DATE_FORMAT('2019-01-01 13:30:05', '%d/%m/%Y %h:%i:%s %p'); -- 输出:01/01/2019 01:30:05 PM
SELECT DATE_FORMAT('2019-01-01 13:30:05', '%M %d, %Y %r'); -- 输出:January 01, 2019 01:30:05 PM
SELECT DATE_FORMAT('2019-01-01 13:30:05', '%d %b, %Y %T'); -- 输出:01 Jan, 2019 13:30:05
SELECT DATE_FORMAT('2019-01-01 13:30:05', '%a, %M %d %h:%i %p'); -- 输出:Tue, January 01 01:30 PM
总结
MySQL 提供了多种函数和方法来格式化时间戳,包括日期格式化、时间格式化、日期时间格式化等。通过使用这些函数,我们可以根据需求轻松地格式化时间戳。