在MySQL中,時(shí)間戳(timestamp)是表示時(shí)間的一種格式,它是一個(gè)整數(shù),表示從 1970 年 1 月 1 日 00:00:00(格林威治標(biāo)準(zhǔn)時(shí)間)到當(dāng)前時(shí)間的秒數(shù)。時(shí)間戳通常用于記錄數(shù)據(jù)被創(chuàng)建或修改的時(shí)間,但在展示數(shù)據(jù)時(shí),我們往往需要將時(shí)間戳轉(zhuǎn)換為常用的日期格式。
MySQL提供了將時(shí)間戳轉(zhuǎn)換為日期格式的函數(shù),常見的有DATE_FORMAT和FROM_UNIXTIME。
-- 使用DATE_FORMAT函數(shù)將時(shí)間戳轉(zhuǎn)換為日期格式 SELECT DATE_FORMAT(FROM_UNIXTIME(1597797785), '%Y-%m-%d %H:%i:%s') AS datetime; -- 使用FROM_UNIXTIME函數(shù)將時(shí)間戳轉(zhuǎn)換為日期格式 SELECT FROM_UNIXTIME(1597797785, '%Y-%m-%d %H:%i:%s') AS datetime;
以上兩個(gè)函數(shù)的區(qū)別在于,DATE_FORMAT需要先將時(shí)間戳轉(zhuǎn)換為日期格式,然后再根據(jù)指定的格式進(jìn)行格式化;而FROM_UNIXTIME直接將時(shí)間戳轉(zhuǎn)換為日期格式,并指定格式。
在上述代碼中,我們將一個(gè)時(shí)間戳(1597797785)轉(zhuǎn)換為了一個(gè)日期格式(2020-08-19 22:03:05)。
除了常用的日期格式(如:%Y-%m-%d %H:%i:%s),還有其他格式參數(shù),例如:
- %Y-%m-%d:年-月-日
- %Y-%m-%d %H:%i:%s:年-月-日 時(shí):分:秒
- %Y/%m/%d:年/月/日
- %m/%d/%Y %H:%i:%s:月/日/年 時(shí):分:秒
在使用時(shí)間戳轉(zhuǎn)換為日期格式時(shí),需要注意時(shí)區(qū)的問題。如果不指定時(shí)區(qū),MySQL默認(rèn)使用服務(wù)器的時(shí)區(qū)轉(zhuǎn)換。可以使用SET time_zone語句設(shè)置時(shí)區(qū),例如:
SET time_zone = '+8:00'; SELECT FROM_UNIXTIME(1597797785, '%Y-%m-%d %H:%i:%s') AS datetime;
以上代碼將時(shí)區(qū)設(shè)置為東八區(qū)(北京時(shí)間),然后將時(shí)間戳轉(zhuǎn)換為日期格式。
總之,在處理時(shí)間戳?xí)r,需要根據(jù)實(shí)際需求選擇合適的轉(zhuǎn)換方式和格式。