使用MYSQL TIMESTAMP字段進(jìn)行時(shí)間加減運(yùn)算問題
MYSQL TIMESTAMP字段進(jìn)行時(shí)間加減運(yùn)算
在數(shù)據(jù)分析過(guò)程中,想當(dāng)然地對(duì)TIMESTAMP字段進(jìn)行運(yùn)算,導(dǎo)致結(jié)果謬之千里
計(jì)算公式如下
-- create_time與week_time的聲明都是TIMESTAMP(), 要求精確到分鐘 -- SELECT (sa.create_time - sa.week_time)/(1000 * 60) from alarm_sla_1 sa
當(dāng)然正確的解法是利用timestampdiff函數(shù),如下:
SELECT timestampdiff(minute, sa.create_time, sa.week_time) from alarm_sla_1 sa
但有意思的問題在于,MYSQL明明支持減法操作,為何操作的結(jié)果又大相徑庭?
類似的問題還有,TIMESTAMP字段的時(shí)間精度是什么?
從MYSQL的官方實(shí)例中可以看到(請(qǐng)見后續(xù)的參考文檔),TIMESTAMP字段的小數(shù)部分確定了秒的經(jīng)度,3位小數(shù)精確到毫秒,6位小數(shù)精確到微秒,如下:
| 聲明方式 | 小數(shù)長(zhǎng)度 | 精度 |
|---|---|---|
| TIMESTAMP(3) | 3 | 毫秒 |
| TIMESTAMP(6) | 6 | 微秒 |
按照上面的推論,那么默認(rèn)的聲明TIMESTAMP應(yīng)該精確到秒,那么應(yīng)該相減的結(jié)果應(yīng)該得到秒,測(cè)試語(yǔ)句如下:
SELECT sa.week_time - sa.create_time, timestampdiff(second, sa.create_time, sa.week_time) from alarm_sla_1 sa
但最后的結(jié)果見下表:
| 相減結(jié)果 | 函數(shù)結(jié)果 |
|---|---|
| 1000012 | 86412 |
顯然,并不存在相關(guān)性,差異何止里計(jì)?
后來(lái)繼續(xù)進(jìn)行了指定經(jīng)度的操作運(yùn)算,結(jié)論依舊如此。
DATETIME 與 TIMESTAMP的區(qū)別
| 特性 | DATETIME | TIMESTAMP |
|---|---|---|
| 時(shí)間范圍 | 1000-01-01 00:00:00到9999-12-31 23:59:59 | 1970-01-01 00:00:01到2038-01-09 03:14:07 |
| 存儲(chǔ)空間 | 8+3(秒的精度) | 4+3(秒的精度) |
| 格式轉(zhuǎn)換 | 不支持 | 支持UTC |
| 多時(shí)區(qū)支持 | 不支持,固定時(shí)區(qū) | 不支持 |
| 創(chuàng)建索引 | 不能 | 能 |
| 查詢后緩存結(jié)果 | 否 | 是 |
結(jié)論
MYSQL中TIMESTAMP字段直接進(jìn)行相減操作,可能得到難以理解的結(jié)果,請(qǐng)慎用。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
參考文檔
相關(guān)文章
mysql 動(dòng)態(tài)執(zhí)行存儲(chǔ)過(guò)程語(yǔ)句
MSSQL中動(dòng)態(tài)執(zhí)行sql語(yǔ)句可以使用EXEC()函數(shù)。MSSQL中也有類似的函數(shù)EXECUTE(),不過(guò)不同的是MYSQL中動(dòng)態(tài)執(zhí)行存儲(chǔ)過(guò)程語(yǔ)句與MSSQL還是有區(qū)別的。2009-07-07
MySQL在Centos7環(huán)境安裝的完整步驟記錄
在CentOS7環(huán)境下安裝MySQL是一項(xiàng)常見的任務(wù),尤其對(duì)于那些沒有網(wǎng)絡(luò)連接或者需要在隔離環(huán)境中的開發(fā)者來(lái)說(shuō),離線安裝MySQL顯得尤為重要,這篇文章主要介紹了MySQL在Centos7環(huán)境安裝的完整步驟,需要的朋友可以參考下2024-10-10
mysql8.0.20配合binlog2sql的配置和簡(jiǎn)單備份恢復(fù)的步驟詳解
這篇文章主要介紹了mysql8.0.20配合binlog2sql的配置和簡(jiǎn)單備份恢復(fù)的步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
坑人的Mysql5.7問題(默認(rèn)不支持Group By語(yǔ)句)
這篇文章主要介紹了坑人的Mysql5.7問題(默認(rèn)不支持Group By語(yǔ)句),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16
這篇文章主要為大家詳細(xì)介紹了macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
mysql中整數(shù)數(shù)據(jù)類型tinyint詳解
大家好,本篇文章主要講的是mysql中整數(shù)數(shù)據(jù)類型tinyint詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12

