电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

為什么MySQL 使用timestamp可以無視時區(qū)問題.

瀏覽:53日期:2023-10-08 08:14:42

之前一直有過疑惑為什么MySQL數據庫存timestamp可以無視時區(qū)問題.在業(yè)務中也是一直使用Laravel框架,內置的Migration也是使用的timestamp類型字段, 也沒太關心.

開始

查看當前數據庫時區(qū)

mysql> show variables like '%time_zone%';+------------------+--------+| Variable_name | Value |+------------------+--------+| system_time_zone | CST || time_zone | +08:00 |+------------------+--------+2 rows in set (0.30 sec)

查看表結構

mysql> desc timestamp_test;+--------------+-----------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------+-----------+------+-----+---------+----------------+| id | int | NO | PRI | NULL | auto_increment || created_time | datetime | YES | | NULL ||| created_at | timestamp | YES | | NULL ||+--------------+-----------+------+-----+---------+----------------+3 rows in set (0.26 sec)

插入數據

mysql> insert into timestamp_test(created_time, created_at) values(’2020-12-09 08:00:00’, ’2020-12-09 08:00:00’);Query OK, 1 row affected (0.22 sec)mysql> select * from timestamp_test;+----+---------------------+---------------------+| id | created_time | created_at |+----+---------------------+---------------------+| 1 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 |+----+---------------------+---------------------+1 row in set (0.06 sec)

這個時間看起來是沒問題的, 那么我們嘗試修改時區(qū)再插入數據

mysql> SET time_zone = '+00:00';Query OK, 0 rows affected (0.03 sec)mysql> insert into timestamp_test(created_time, created_at) values(’2020-12-09 08:00:00’, ’2020-12-09 08:00:00’);Query OK, 1 row affected (0.03 sec)mysql> SET time_zone = '+08:00';Query OK, 0 rows affected (0.04 sec)

這時候再查看數據, 兩條插入的SQL是一樣的,但是發(fā)現查詢的結果是不一樣的這兩條數據created_at的相差正好是時區(qū)的時間差

mysql> select * from timestamp_test;+----+---------------------+---------------------+| id | created_time | created_at |+----+---------------------+---------------------+| 1 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 || 2 | 2020-12-09 08:00:00 | 2020-12-09 16:00:00 |+----+---------------------+---------------------+2 rows in set (0.06 sec)

再看一下實際存儲的時間戳, 然后我們變化時區(qū), 發(fā)現字段時間變化了,但是原始的時間戳數據沒變

mysql> select *, unix_timestamp(created_at) from timestamp_test;+----+---------------------+---------------------+----------------------------+| id | created_time | created_at | unix_timestamp(created_at) |+----+---------------------+---------------------+----------------------------+| 1 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 | 1607472000 || 2 | 2020-12-09 08:00:00 | 2020-12-09 16:00:00 | 1607500800 |+----+---------------------+---------------------+----------------------------+2 rows in set (0.06 sec)mysql> SET time_zone = '+00:00';Query OK, 0 rows affected (0.09 sec)mysql> show variables like '%time_zone%';+------------------+--------+| Variable_name | Value |+------------------+--------+| system_time_zone | CST || time_zone | +00:00 |+------------------+--------+2 rows in set (0.08 sec)mysql> select *, unix_timestamp(created_at) from timestamp_test;+----+---------------------+---------------------+----------------------------+| id | created_time | created_at | unix_timestamp(created_at) |+----+---------------------+---------------------+----------------------------+| 1 | 2020-12-09 08:00:00 | 2020-12-09 00:00:00 | 1607472000 || 2 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 | 1607500800 |+----+---------------------+---------------------+----------------------------+2 rows in set (0.18 sec)

因為這一切是MySQL隱式的幫我們轉換了, 讓我們不用關心時區(qū)的問題

就是數據庫實際上會保存 UTC 時間戳,寫入的時候先按 Session 時區(qū)轉成 UTC 時間,讀出的時候再按 Session 時區(qū)轉成當前時區(qū)的時間,這些轉換都是透明的

假如我們在正八區(qū)存儲了2020-12-09 08:00:00時間的一條數據 我們在正八區(qū)取出這一條數據, 時間依然是2020-12-09 08:00:00 這時候我們有一臺在零時區(qū)的服務器,連接MySQL,并且把當前連接的時區(qū)設置為+00:00,再去查數據庫這條記錄,查到的數據是:2020-12-09 00:00:00, 正好對應零時區(qū)的時間,這樣子我們就不用考慮時區(qū)的問題.

以上就是為什么MySQL timestamp可以無視時區(qū)問題.的詳細內容,更多關于MySQL timestamp無視時區(qū)的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 路面机械厂家| 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | POS机办理_个人POS机免费领取 - 银联POS机申请首页 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 南京交通事故律师-专打交通事故的南京律师 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 中红外QCL激光器-其他连续-半导体连续激光器-筱晓光子 | 酒万铺-酒水招商-酒水代理 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 扬州汇丰仪表有限公司| 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 智能楼宇-楼宇自控系统-楼宇智能化-楼宇自动化-三水智能化 | 学考网学历中心| 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 |