濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解

MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解

熱門(mén)標(biāo)簽:外呼系統(tǒng)線路經(jīng)常出問(wèn)題嗎 地圖標(biāo)注百度競(jìng)價(jià) 如何辦理400客服電話 安陽(yáng)手機(jī)自動(dòng)外呼系統(tǒng)原理是什么 地圖標(biāo)注什么軟件好用 神行者百貨商場(chǎng)地圖標(biāo)注 地圖標(biāo)注專員入駐 西藏地圖標(biāo)注改進(jìn)點(diǎn) 外呼系統(tǒng)怎樣才能不封號(hào)

 MySQL timestamp的類型與時(shí)區(qū)

MySQL的timestamp類型時(shí)間范圍between '1970-01-01 00:00:01' and '2038-01-19 03:14:07',超出這個(gè)范圍則值記錄為'0000-00-00 00:00:00',該類型的一個(gè)重要特點(diǎn)就是保存的時(shí)間與時(shí)區(qū)密切相關(guān),上述所說(shuō)的時(shí)間范圍是UTC(Universal Time Coordinated)標(biāo)準(zhǔn),指的是經(jīng)度0度上的標(biāo)準(zhǔn)時(shí)間,我國(guó)日常生活中時(shí)區(qū)以首都北京所處的東半球第8區(qū)為基準(zhǔn),統(tǒng)一使用東8區(qū)時(shí)間(俗稱北京時(shí)間),比UTC要早8個(gè)小時(shí),服務(wù)器的時(shí)區(qū)設(shè)置也遵照此標(biāo)準(zhǔn),因此對(duì)應(yīng)過(guò)來(lái)timestamp的時(shí)間范圍則應(yīng)校準(zhǔn)為'1970-01-01 08:00:01' and '2038-01-19 11:14:07',也就是說(shuō)東八區(qū)的1970-1-1 08:00:01等同于UTC 1970-1-1 00:00:01。

需要特點(diǎn)注意,timestamp類型的時(shí)間不僅僅與寫(xiě)入記錄時(shí)的時(shí)區(qū)有關(guān),顯示時(shí)也與時(shí)區(qū)有關(guān),例如:

mysql> desc j1_dt;
+-------+-----------+------+-----+-------------------+-------+
| Field | Type   | Null | Key | Default      | Extra |
+-------+-----------+------+-----+-------------------+-------+
| dt  | timestamp | NO  |   | CURRENT_TIMESTAMP |    | 
+-------+-----------+------+-----+-------------------+-------+
1 row in set (0.00 sec)
mysql> insert into j1_dt values ('1970-01-01 08:00:01');
Query OK, 1 row affected (0.00 sec)
mysql> select * from j1_dt;
+---------------------+
| dt         |
+---------------------+
| 1970-01-01 08:00:01 | 
+---------------------+
1 row in set (0.00 sec)
mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from j1_dt;
+---------------------+
| dt         |
+---------------------+
| 1970-01-01 00:00:01 | 
+---------------------+
1 row in set (0.00 sec)
mysql> set time_zone='+1:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from j1_dt;
+---------------------+
| dt         |
+---------------------+
| 1970-01-01 01:00:01 | 
+---------------------+
1 row in set (0.00 sec)

如上述所示,根據(jù)時(shí)區(qū)的不同,顯示的日期也是不一樣的,這正是timestamp類型在MySQL日期類型中獨(dú)有的時(shí)區(qū)特點(diǎn)。

如果向timestamp類型列插入的值超出了指定范圍,則實(shí)際實(shí)際保存的值為'0000-00-00 00:00:00',并觸發(fā)一個(gè)警告信息:

mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from j1_dt;
+---------------------+
| dt         |
+---------------------+
| 1970-01-01 08:00:01 | 
+---------------------+
1 row in set (0.00 sec)
mysql> insert into j1_dt values ('1970-01-01 00:00:01');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------------------------------------------+
| Level  | Code | Message                       |
+---------+------+------------------------------------------------------+
| Warning | 1264 | Out of range value adjusted for column 'dt' at row 1 | 
+---------+------+------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from j1_dt;
+---------------------+
| dt         |
+---------------------+
| 1970-01-01 08:00:01 | 
| 0000-00-00 00:00:00 | 
+---------------------+
2 rows in set (0.00 sec)

觸發(fā)的警告信息在MySQL層面僅是個(gè)警告而并非錯(cuò)誤,前端應(yīng)用的try catch捕獲不到,不過(guò),由于實(shí)際寫(xiě)入的數(shù)據(jù)并非期望值,還是有可能埋下一些隱患,這些隱患一旦顯露,就有可能觸發(fā)前端應(yīng)用出現(xiàn)異常。

  對(duì)于timestamp類型,在實(shí)際應(yīng)用中務(wù)必理解時(shí)區(qū)的概念,在設(shè)置timestamp列默認(rèn)值,及實(shí)際賦值時(shí)務(wù)必明確寫(xiě)入的值實(shí)際保存時(shí)的狀態(tài),盡量避免埋入隱患。對(duì)于現(xiàn)有已經(jīng)出錯(cuò)的記錄,可以考慮通過(guò)批量UPDATE及修改表結(jié)構(gòu)的方式予以處理。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • 通過(guò)實(shí)例解析MySql CURRENT_TIMESTAMP函數(shù)
  • MySQL的時(shí)間差函數(shù)TIMESTAMPDIFF、DATEDIFF的用法
  • MySQL的時(shí)間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date)
  • MySQL中datetime和timestamp的區(qū)別及使用詳解
  • MySQL 5.6 中 TIMESTAMP有那些變化
  • MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 參數(shù)
  • Mysql中的Datetime和Timestamp比較
  • mysql 數(shù)據(jù)類型TIMESTAMP
  • 為什么MySQL 使用timestamp可以無(wú)視時(shí)區(qū)問(wèn)題.

標(biāo)簽:酒泉 AXB 阜陽(yáng) 張掖 衡水 貴港 萍鄉(xiāng) 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解》,本文關(guān)鍵詞  MySQL,timestamp,的,類型,與,;如發(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)文章
  • 下面列出與本文章《MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鄂温| 南安市| 基隆市| 上虞市| 襄樊市| 海安县| 五华县| 汉阴县| 博客| 银川市| 萨迦县| 沈阳市| 浑源县| 老河口市| 乌拉特中旗| 乐平市| 通化县| 乐业县| 巴马| 衡东县| 方山县| 文水县| 海门市| 汉沽区| 湛江市| 安达市| 都匀市| 布尔津县| 吉木萨尔县| 西华县| 额济纳旗| 固镇县| 同江市| 盐池县| 余干县| 台安县| 定襄县| 大兴区| 苍南县| 怀集县| 元朗区|