在MySQL中,时间戳(Timestamp)和日期(Date)是两种常见的时间数据类型。时间戳通常以整数形式存储,表示从 1970 年 1 月 1 日(UTC)开始的秒数或毫秒数,而日期则以YYYY-MM-DD的格式存储。在实际开发中,我们经常需要在时间戳和日期之间进行转换。以下是 MySQL 中时间戳和日期转换的常用方法。
1、时间戳转日期
MySQL 提供了 FROM_UNIXTIME() 函数,用于将时间戳转换为日期格式。
(1)、语法
FROM_UNIXTIME(unix_timestamp, [format])
unix_timestamp: 时间戳(以秒为单位)。
format: 可选参数,指定输出的日期格式。如果省略,默认格式为 YYYY-MM-DD HH:MM:SS。
(2)、示例:
-- 将时间戳 1739160000 转换为日期 SELECT FROM_UNIXTIME(1739160000); -- 输出:2025-2-10 12:00:00 -- 指定输出格式 SELECT FROM_UNIXTIME(1739160000, '%Y-%m-%d'); -- 输出:2025-2-10
2、日期转时间戳
MySQL 提供了 UNIX_TIMESTAMP() 函数,用于将日期转换为时间戳。
(1)、语法
UNIX_TIMESTAMP([date])
date: 可选参数,表示需要转换的日期。如果省略,则返回当前时间的时间戳。
(2)、示例:
-- 将当前时间转换为时间戳 SELECT UNIX_TIMESTAMP(); -- 输出:当前时间的时间戳(以秒为单位) -- 将指定日期转换为时间戳 SELECT UNIX_TIMESTAMP('2025-2-10 12:00:00'); -- 输出:1739160000
3、毫秒级时间戳的处理
如果时间戳是以毫秒为单位(例如 JavaScript 生成的时间戳),则需要先将毫秒转换为秒,再进行日期转换。
-- 将毫秒级时间戳 1739160000000 转换为日期 SELECT FROM_UNIXTIME(1739160000000 / 1000); -- 输出:2025-2-10 12:00:00
4、日期格式化
在时间戳和日期的转换过程中,可以使用 DATE_FORMAT() 函数对日期进行格式化。
(1)、语法:
DATE_FORMAT(date, format)
date: 需要格式化的日期。
format: 指定输出的日期格式。
(2)、示例:
-- 将日期格式化为 'YYYY年MM月DD日' SELECT DATE_FORMAT('2025-2-10', '%Y年%m月%d日'); -- 输出:2025年02月10日
5、常见日期格式符号
符号 | 描述 |
---|---|
%Y | 四位数的年份(例如 2023) |
%y | 两位数的年份(例如 23) |
%m | 月份(01-12) |
%d | 日期(01-31) |
%H | 小时(00-23) |
%i | 分钟(00-59) |
%s | 秒(00-59) |
%W | 星期名称(例如 Monday) |
%a | 缩写的星期名称(例如 Mon) |