Mysql时间转换函数
简介:MySQL 中常用的时间转换函数
一、函数简介
(一)DATE_FORMAT(date, format)
- 功能:将日期或日期时间类型的数据按照指定的格式进行格式化输出。
示例:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
NOW() 函数返回当前的日期和时间。
%Y 表示四位的年份,%m 表示两位的月份,%d 表示两位的日期,%H 表示两位的小时(24 小时制),%i 表示两位的分钟,%s 表示两位的秒。因此,DATE_FORMAT(NOW(), ‘%Y-%m-%d %H:%i:%s’) 将当前日期和时间格式化为 YYYY-MM-DD HH:MM:SS 的形式。
(二)STR_TO_DATE(str, format)
- 功能:将字符串按照指定的格式转换为日期或日期时间类型。
- 示例代码:
SELECT STR_TO_DATE('2025-01-21 14:30:00', '%Y-%m-%d %H:%i:%s');
代码解释:
第一个参数 ‘2025-01-21 14:30:00’ 是一个字符串,第二个参数 ‘%Y-%m-%d %H:%i:%s’ 是该字符串的日期时间格式。此函数将字符串转换为日期时间类型。
(三)FROM_UNIXTIME(unix_timestamp[, format])
-
功能:将 Unix 时间戳转换为日期时间类型。如果提供了 format 参数,会按照指定的格式输出。
-
示例代码:
SELECT FROM_UNIXTIME(1672901257);
SELECT FROM_UNIXTIME(1672901257, '%Y-%m-%d %H:%i:%s');
代码解释:
第一个 SELECT 语句将 Unix 时间戳 1672901257 转换为日期时间类型,使用默认的格式。
第二个 SELECT 语句将 Unix 时间戳按照 YYYY-MM-DD HH:MM:SS 的格式进行转换。
(四)UNIX_TIMESTAMP([date])
1.功能:将日期或日期时间类型的数据转换为 Unix 时间戳。如果不传入 date 参数,默认使用当前时间。
- 示例代码:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP('2025-01-21 14:30:00');
代码解释:
第一个 SELECT 语句将当前时间转换为 Unix 时间戳。
第二个 SELECT 语句将 ‘2025-01-21 14:30:00’ 这个日期时间转换为 Unix 时间戳。
(五)TIMESTAMP(date) 和 TIMESTAMP(date1, date2)
1.功能:
TIMESTAMP(date) 将日期或日期时间表达式转换为 TIMESTAMP 类型。
TIMESTAMP(date1, date2) 将两个日期或日期时间表达式组合为一个 TIMESTAMP 类型。
- 示例代码:
SELECT TIMESTAMP('2025-01-21');
SELECT TIMESTAMP('2025-01-21 14:30:00', '12:00:00');
代码解释:
第一个 SELECT 语句将日期 ‘2025-01-21’ 转换为 TIMESTAMP 类型。
第二个 SELECT 语句将 ‘2025-01-21 14:30:00’ 和 ‘12:00:00’ 组合为一个 TIMESTAMP 类型,会将 ‘12:00:00’ 作为时间部分添加到 ‘2025-01-21 14:30:00’ 中。
(六)TIME_TO_SEC(time)
- 功能:将时间转换为秒数。
- 示例代码:
SELECT TIME_TO_SEC('14:30:00');
代码解释:
该函数将 ‘14:30:00’ 这个时间转换为秒数,结果为 52200(14 * 3600 + 30 * 60)
(七)SEC_TO_TIME(seconds)
- 功能:将秒数转换为时间。
- 示例代码:
SELECT SEC_TO_TIME(52200);
代码解释:
该函数将 52200 秒转换为时间,结果为 14:30:00。
二、使用注意事项
1、当使用 STR_TO_DATE 和 DATE_FORMAT 函数时,要确保 str 和 format 参数的格式匹配,否则会返回 NULL。
2、对于 FROM_UNIXTIME 和 UNIX_TIMESTAMP 函数,要注意时间戳的精度(秒级或毫秒级),如果是毫秒级时间戳,可能需要先进行转换(如除以 1000)。