婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL timestamp的類型與時區實例詳解

MySQL timestamp的類型與時區實例詳解

熱門標簽:外呼系統線路經常出問題嗎 地圖標注百度競價 如何辦理400客服電話 安陽手機自動外呼系統原理是什么 地圖標注什么軟件好用 神行者百貨商場地圖標注 地圖標注專員入駐 西藏地圖標注改進點 外呼系統怎樣才能不封號

 MySQL timestamp的類型與時區

MySQL的timestamp類型時間范圍between '1970-01-01 00:00:01' and '2038-01-19 03:14:07',超出這個范圍則值記錄為'0000-00-00 00:00:00',該類型的一個重要特點就是保存的時間與時區密切相關,上述所說的時間范圍是UTC(Universal Time Coordinated)標準,指的是經度0度上的標準時間,我國日常生活中時區以首都北京所處的東半球第8區為基準,統一使用東8區時間(俗稱北京時間),比UTC要早8個小時,服務器的時區設置也遵照此標準,因此對應過來timestamp的時間范圍則應校準為'1970-01-01 08:00:01' and '2038-01-19 11:14:07',也就是說東八區的1970-1-1 08:00:01等同于UTC 1970-1-1 00:00:01。

需要特點注意,timestamp類型的時間不僅僅與寫入記錄時的時區有關,顯示時也與時區有關,例如:

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)

如上述所示,根據時區的不同,顯示的日期也是不一樣的,這正是timestamp類型在MySQL日期類型中獨有的時區特點。

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

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)

觸發的警告信息在MySQL層面僅是個警告而并非錯誤,前端應用的try catch捕獲不到,不過,由于實際寫入的數據并非期望值,還是有可能埋下一些隱患,這些隱患一旦顯露,就有可能觸發前端應用出現異常。

  對于timestamp類型,在實際應用中務必理解時區的概念,在設置timestamp列默認值,及實際賦值時務必明確寫入的值實際保存時的狀態,盡量避免埋入隱患。對于現有已經出錯的記錄,可以考慮通過批量UPDATE及修改表結構的方式予以處理。

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

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

標簽:酒泉 AXB 阜陽 張掖 衡水 貴港 萍鄉 雞西

巨人網絡通訊聲明:本文標題《MySQL timestamp的類型與時區實例詳解》,本文關鍵詞  MySQL,timestamp,的,類型,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL timestamp的類型與時區實例詳解》相關的同類信息!
  • 本頁收集關于MySQL timestamp的類型與時區實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 油尖旺区| 星子县| 聊城市| 镇宁| 平遥县| 拜城县| 栖霞市| 礼泉县| 内黄县| 景宁| 福州市| 临泉县| 惠州市| 嵩明县| 苏尼特左旗| 宝坻区| 武穴市| 望谟县| 清河县| 屏南县| 全椒县| 邹平县| 宝丰县| 无锡市| 通州市| 观塘区| 吉林市| 洛南县| 台山市| 南汇区| 防城港市| 阳朔县| 香格里拉县| 新竹县| 景泰县| 沛县| 民乐县| 福海县| 盈江县| 通许县| 友谊县|