佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 關(guān)于MySQL的時(shí)間進(jìn)位問(wèn)題淺析

關(guān)于MySQL的時(shí)間進(jìn)位問(wèn)題淺析

熱門(mén)標(biāo)簽:AI電銷 服務(wù)外包 網(wǎng)站排名優(yōu)化 Linux服務(wù)器 地方門(mén)戶網(wǎng)站 呼叫中心市場(chǎng)需求 百度競(jìng)價(jià)排名 鐵路電話系統(tǒng)

MySQL 當(dāng)中默認(rèn)的時(shí)間類型(datetime 和 timestamp)的精度是秒,如果設(shè)置進(jìn)去的時(shí)間值精度小于秒的話,就會(huì)被四舍五入,可能導(dǎo)致數(shù)據(jù)庫(kù)中的值比原始值多了一秒。也就是說(shuō),本來(lái)屬于今天的記錄可能會(huì)被記到明天。

下面是一個(gè)例子,演示了時(shí)間是如何進(jìn)位的。首先創(chuàng)建一張表:

CREATE TABLE test_time (
 time_sec   datetime,
 time_millis datetime(3),
 time_micros datetime(6),
 stamp_sec  timestamp,
 stamp_millis timestamp(3),
 stamp_micros timestamp(6)
);

有的讀者可能不知道 datetime 和 timestamp 定義時(shí)是可以帶精度的,精度值為 0~6,表示保留幾位小數(shù),默認(rèn)值為 0。顯然保留 3 位可看作精度為毫秒,保留 6 位可看作精度為微秒。

然后我們插入一條記錄:

INSERT INTO test_time
( time_sec, time_millis, time_micros, 
 stamp_sec, stamp_millis, stamp_micros )
VALUES(
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654'
);

然后再做一次 select * from test_time 查詢就能看到下面的結(jié)果:

time_sec             |time_millis            |time_micros               |stamp_sec            |stamp_millis           |stamp_micros              |
---------------------|-----------------------|--------------------------|---------------------|-----------------------|--------------------------|
2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|

可以看到 time_sec 和 stamp_sec 在數(shù)據(jù)庫(kù)中的秒值都被進(jìn)位了,time_millis 和 stamp_millis 的毫秒值都被進(jìn)位了。

由此可見(jiàn),要避免這樣的誤差,有兩個(gè)手段:

  • 定義字段的時(shí)候使用 datetime(6) 或 timestamp(6);
  • 定義字段時(shí)不帶精度,但在將時(shí)間存入數(shù)據(jù)庫(kù)之前,要將毫秒值截取掉。

相關(guān)文檔:

MySQL 5.6 Reference: Fractional Seconds in Time Values

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • MySQL日期數(shù)據(jù)類型、時(shí)間類型使用總結(jié)
  • mysql之TIMESTAMP(時(shí)間戳)用法詳解
  • MySql查詢時(shí)間段的方法
  • mysql 日期和時(shí)間格式轉(zhuǎn)換實(shí)現(xiàn)語(yǔ)句
  • mysql計(jì)算時(shí)間差函數(shù)
  • FROM_UNIXTIME 格式化MYSQL時(shí)間戳函數(shù)
  • Mysql 日期時(shí)間 DATE_FORMAT(date,format)
  • MySQL中日期和時(shí)間戳互相轉(zhuǎn)換的函數(shù)和方法
  • mysql中獲取一天、一周、一月時(shí)間數(shù)據(jù)的各種sql語(yǔ)句寫(xiě)法
  • MySQL timestamp自動(dòng)更新時(shí)間分享

標(biāo)簽:仙桃 黃山 銅川 湘潭 衡水 蘭州 崇左 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于MySQL的時(shí)間進(jìn)位問(wèn)題淺析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    丰城市| 塔河县| 娄烦县| 金华市| 平和县| 灵璧县| 高碑店市| 兴义市| 龙南县| 建水县| 东乌珠穆沁旗| 泗洪县| 洪江市| 博湖县| 漾濞| 武安市| 开化县| 克拉玛依市| 六枝特区| 双江| 崇明县| 平潭县| 瑞金市| 长沙市| 新平| 夏邑县| 三台县| 巨野县| 克东县| 崇礼县| 西充县| 马山县| 郎溪县| 长治县| 华蓥市| 平阴县| 且末县| 上饶县| 保靖县| 东乡| 马边|