MySQL中存儲(chǔ)時(shí)間戳的類型是bigint。時(shí)間戳是從1970年1月1日 00:00:00開(kāi)始計(jì)算的秒數(shù)。
如果我們直接從數(shù)據(jù)庫(kù)中讀取時(shí)間戳,那么看到的時(shí)間格式是這樣的:1625841037。這對(duì)人類來(lái)說(shuō)并不直觀,需要通過(guò)代碼來(lái)將其格式化為可讀性強(qiáng)的日期和時(shí)間。
下面的代碼演示將時(shí)間戳格式化為年-月-日 時(shí):分:秒的形式:
SELECT FROM_UNIXTIME(1625841037, '%Y-%m-%d %H:%i:%s');
輸出結(jié)果為:
2021-07-09 15:50:37
上面的代碼中使用了MySQL內(nèi)置函數(shù)FROM_UNIXTIME。第一個(gè)參數(shù)是時(shí)間戳,第二個(gè)參數(shù)是輸出格式,可以根據(jù)需要自定義格式。
以下是常用的格式化選項(xiàng):
- %Y:四位數(shù)的年份
- %m:兩位數(shù)的月份(01-12)
- %d:兩位數(shù)的日期(01-31)
- %H:小時(shí),24小時(shí)制(00-23)
- %i:分鐘(00-59)
- %s:秒數(shù)(00-59)
在實(shí)際應(yīng)用中,我們可能需要根據(jù)時(shí)區(qū)和格式要求對(duì)時(shí)間進(jìn)行進(jìn)一步處理。例如,需要將時(shí)間格式化為年-月-日 時(shí):分:秒 GMT+8的形式:
SELECT DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME(1625841037), 'UTC', 'Asia/Shanghai'), '%Y-%m-%d %H:%i:%s GMT+8');
輸出結(jié)果為:
2021-07-09 23:50:37 GMT+8
上面的代碼中使用了MySQL內(nèi)置函數(shù)DATE_FORMAT和CONVERT_TZ。前者用于格式化日期,后者用于轉(zhuǎn)換時(shí)區(qū)。
需要注意的是,不同的MySQL版本和配置可能會(huì)對(duì)時(shí)間格式化產(chǎn)生不同的結(jié)果。在實(shí)際應(yīng)用中需要根據(jù)系統(tǒng)配置和需求來(lái)選擇合適的方式進(jìn)行時(shí)間格式化。