三站一體網(wǎng)站公司1688網(wǎng)站
在MySQL中,經(jīng)常需要在 DATE
、TIMESTAMP
和字符串之間進(jìn)行相互轉(zhuǎn)換。以下是一些常見(jiàn)的轉(zhuǎn)換方法:
1. 字符串到日期/時(shí)間類型
-
字符串轉(zhuǎn)
DATE
:使用
STR_TO_DATE()
函數(shù)將字符串轉(zhuǎn)換為DATE
類型。你需要提供字符串的格式。SELECT STR_TO_DATE('2024-08-24', '%Y-%m-%d') AS my_date;
-
字符串轉(zhuǎn)
TIMESTAMP
:同樣使用
STR_TO_DATE()
函數(shù),但格式要包括時(shí)間部分。SELECT STR_TO_DATE('2024-08-24 14:35:00', '%Y-%m-%d %H:%i:%s') AS my_timestamp;
2. 日期/時(shí)間類型到字符串
-
DATE
轉(zhuǎn)字符串:使用
DATE_FORMAT()
函數(shù)將DATE
轉(zhuǎn)換為指定格式的字符串。SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS date_str;
-
TIMESTAMP
轉(zhuǎn)字符串:使用
DATE_FORMAT()
函數(shù)將TIMESTAMP
轉(zhuǎn)換為指定格式的字符串。SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS timestamp_str;
3. 日期類型和時(shí)間戳類型之間的轉(zhuǎn)換
-
DATE
轉(zhuǎn)TIMESTAMP
:DATE
類型只有日期部分,沒(méi)有時(shí)間部分,MySQL 在轉(zhuǎn)換時(shí)會(huì)默認(rèn)將時(shí)間部分設(shè)置為00:00:00
。SELECT CAST('2024-08-24' AS DATETIME) AS date_to_timestamp;
-
TIMESTAMP
轉(zhuǎn)DATE
:使用
DATE()
函數(shù)從TIMESTAMP
中提取日期部分。SELECT DATE(NOW()) AS timestamp_to_date;
4. UNIX_TIMESTAMP
和 DATE
/TIMESTAMP
的相互轉(zhuǎn)換
-
UNIX_TIMESTAMP
轉(zhuǎn)TIMESTAMP
:使用
FROM_UNIXTIME()
函數(shù)將UNIX_TIMESTAMP
轉(zhuǎn)換為TIMESTAMP
。-- 將UNIX時(shí)間戳轉(zhuǎn)為時(shí)間戳 SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()) AS unix_to_timestamp; -- UNIX時(shí)間戳轉(zhuǎn)時(shí)間戳 (如果是13位需要除1000) SELECT FROM_UNIXTIME(1692874200) AS unix_to_timestamp;
-
TIMESTAMP
轉(zhuǎn)UNIX_TIMESTAMP
: -
使用
UNIX_TIMESTAMP()
函數(shù)將TIMESTAMP
轉(zhuǎn)換為UNIX_TIMESTAMP
。-- 將時(shí)間戳轉(zhuǎn)換為UNIX時(shí)間戳 SELECT UNIX_TIMESTAMP(NOW()) AS timestamp_to_unix;
5. 直接通過(guò)類型轉(zhuǎn)換函數(shù)
-
CAST 和 CONVERT 函數(shù):
使用
CAST()
或CONVERT()
函數(shù)可以在DATE
、TIMESTAMP
和字符串之間進(jìn)行轉(zhuǎn)換。SELECT CAST('2024-08-24 14:35:00' AS DATE) AS cast_to_date;SELECT CONVERT(NOW(), CHAR) AS convert_to_string;
6. 字符串到日期或時(shí)間戳,帶時(shí)區(qū)的轉(zhuǎn)換
-
CONVERT_TZ
: 將時(shí)間戳從一個(gè)時(shí)區(qū)轉(zhuǎn)換到另一個(gè)時(shí)區(qū)。– 將UTC時(shí)間戳轉(zhuǎn)換為東八區(qū)時(shí)間
SELECT CONVERT_TZ(‘2024-08-24 06:00:00’, ‘+00:00’, ‘+08:00’);
7. 字符串直接轉(zhuǎn)換為時(shí)間戳
-
如果字符串格式與時(shí)間戳的默認(rèn)格式一致,可以直接進(jìn)行轉(zhuǎn)換,這會(huì)自動(dòng)將字符串轉(zhuǎn)換為時(shí)間戳。注意這種方法僅適用于字符串格式精確匹配默認(rèn)的
DATETIME
格式。SELECT ‘2024-08-24 14:30:00’ + 0 AS timestamp_value;
常用的格式化符號(hào):
%Y
年(四位)%m
月(兩位)%d
日(兩位)%H
小時(shí)(24小時(shí)制)%i
分鐘%s
秒