真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么看主機(jī)時(shí)區(qū) 查看mysql數(shù)據(jù)庫(kù)時(shí)區(qū)

mysql docker 怎么修改時(shí)區(qū)

1、查看當(dāng)前時(shí)區(qū)

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、岳塘網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

date -R

1

1

2、修改設(shè)置時(shí)區(qū)。先輸入 tzselect 命令,然后根據(jù)提示,通過輸入選項(xiàng)前面的數(shù)字來確定選項(xiàng)。我的例子,先選擇 Asia ,再選擇 Hong Kong。香港和中國(guó)采用了同樣的東八區(qū)時(shí)間。

3、復(fù)制相應(yīng)的時(shí)區(qū)文件,替換原來的時(shí)區(qū)文件。命令如下:

/usr/share/zoneinfo/Asia# cp Hong_Kong /etc/localtime

1

1

我們需要的時(shí)區(qū)文件在目錄 /usr/share/zoneinfo/Asia 下。文件名字是 Hong_Kong。把它拷貝覆蓋 /etc/localtime 文件。

4、重新輸入命令 date -R,就可以看到修改時(shí)區(qū)后的中國(guó)時(shí)間了。

mysql修改和查看時(shí)區(qū)(十五)

1. 查看時(shí)區(qū)命令

2.?GMT、UTC、DST、CST時(shí)區(qū)代表的意義

2.1 GMT:Greenwich Mean Time?

2.2?UTC: Coordinated Universal Time

2.3?DST: Daylight Saving Time

2.4?CST:Central Standard Time

3.? 修改時(shí)區(qū)

3.1?僅修改當(dāng)前會(huì)話的時(shí)區(qū),停止會(huì)話失效(CET)

3.2 修改全局的時(shí)區(qū)配置

技術(shù)分享 | MySQL:一文弄懂時(shí)區(qū)&time_zone

你還在被以下問題困擾嗎:

MySQL 的安裝規(guī)范中應(yīng)該設(shè)置什么時(shí)區(qū)?

JAVA 應(yīng)用讀取到的時(shí)間和北京時(shí)間差了14個(gè)小時(shí),為什么?怎么解決?

已經(jīng)運(yùn)行一段時(shí)間的業(yè)務(wù),修改 MySQL 的時(shí)區(qū)會(huì)影響已經(jīng)存儲(chǔ)的時(shí)間類型數(shù)據(jù)嗎?

遷移數(shù)據(jù)時(shí)會(huì)有導(dǎo)致時(shí)間類型數(shù)據(jù)時(shí)區(qū)錯(cuò)誤的可能嗎?

...

看完這篇文章,你能解決上面所有的疑惑。首先出場(chǎng)的是和時(shí)區(qū)相關(guān)的啟動(dòng)參數(shù)和系統(tǒng)變量。

如果要在 MySQL 啟動(dòng)時(shí)就指定時(shí)區(qū),則應(yīng)該使用啟動(dòng)參數(shù): default-time-zone ,示例:

啟動(dòng)后我們可以看到控制時(shí)區(qū)的系統(tǒng)變量,其中 time_zone 變量控制時(shí)區(qū),在MySQL運(yùn)行時(shí)可以通過 set 命令修改(注意:不可以寫在 my.cnf 中):

啟動(dòng)參數(shù)和系統(tǒng)變量的可用值遵循相同的格式:

system_time_zone 變量只有全局值沒有會(huì)話值,不能動(dòng)態(tài)修改,MySQL 啟動(dòng)時(shí),將嘗試自動(dòng)確定服務(wù)器的時(shí)區(qū),并使用它來設(shè)置 system_time_zone 系統(tǒng)變量, 此后該值不變。當(dāng) time_zone='system' 時(shí),就是使用的這個(gè)時(shí)區(qū),示例中 time_zone 就是 CST,而 CST 在 RedHat 上就是東八區(qū):

概括一下就兩點(diǎn):

1. NOW() 和 CURTIME() 系統(tǒng)函數(shù)的返回值受當(dāng)前 session 的時(shí)區(qū)影響

不僅是select now(),包括insert .. values(now())、以及字段的 DEFAULT CURRENT_TIMESTAMP 屬性也受此影響:

2. timestamp 數(shù)據(jù)類型字段存儲(chǔ)的數(shù)據(jù)受時(shí)區(qū)影響

timestamp 數(shù)據(jù)類型會(huì)存儲(chǔ)當(dāng)時(shí)session的時(shí)區(qū)信息,讀取時(shí)會(huì)根據(jù)當(dāng)前 session 的時(shí)區(qū)進(jìn)行轉(zhuǎn)換;而 datetime 數(shù)據(jù)類型插入的是什么值,再讀取就是什么值,不受時(shí)區(qū)影響。也可以理解為已經(jīng)存儲(chǔ)的數(shù)據(jù)是不會(huì)變的,只是 timestamp 類型數(shù)據(jù)在讀取時(shí)會(huì)根據(jù)時(shí)區(qū)轉(zhuǎn)換:

關(guān)于時(shí)區(qū)所有明面上的東西都在上面了,我們前面提到的困擾就是在暗處的經(jīng)驗(yàn)。

1. MySQL的安裝規(guī)范中應(yīng)該設(shè)置什么時(shí)區(qū)?

對(duì)于國(guó)內(nèi)的業(yè)務(wù)了,在 my.cnf 寫入 default-time-zone='+08:00' `,其他地區(qū)和開發(fā)確認(rèn)取對(duì)應(yīng)時(shí)區(qū)即可。

為什么不設(shè)置為 system 呢?使用系統(tǒng)時(shí)間看起來也是個(gè)不錯(cuò)的選擇,比較省事。不建議的原因有兩點(diǎn):

2. JAVA應(yīng)用讀取到的時(shí)間和北京時(shí)間差了14個(gè)小時(shí),為什么?怎么解決?

這通常是 JDBC 參數(shù)中沒有為連接設(shè)置時(shí)區(qū)屬性(用 serverTimezone 參數(shù)指定),并且MySQL中沒有設(shè)置全局時(shí)區(qū),這樣MySQL默認(rèn)使用的是系統(tǒng)時(shí)區(qū),即 CST。這樣一來應(yīng)用與MySQL 建立的連接的 session time_zone 為 CST ,前面我們提到 CST 在 RedHat 上是 +08:00 時(shí)區(qū),但其實(shí)它一共能代表4個(gè)時(shí)區(qū):

JDBC在解析CST時(shí)使用了美國(guó)標(biāo)準(zhǔn)時(shí)間,這就會(huì)導(dǎo)致時(shí)區(qū)錯(cuò)誤。要解決也簡(jiǎn)單:一是遵守上面剛說到的規(guī)范,對(duì)MySQL顯示的設(shè)置'+08:00'時(shí)區(qū);二是JDBC設(shè)置正確的 serverTimezone。

3. 已經(jīng)運(yùn)行一段時(shí)間的業(yè)務(wù),修改MySQL的時(shí)區(qū)會(huì)影響已經(jīng)存儲(chǔ)的時(shí)間類型數(shù)據(jù)嗎?

完全不會(huì),只會(huì)影響對(duì) timestamp 數(shù)據(jù)類型的讀取。這里不得不提一句,為啥要用 timestamp?用 datetime 不香嗎,范圍更大,存儲(chǔ)空間其實(shí)差別很小,趕緊加到開發(fā)規(guī)范中吧。

4. 遷移數(shù)據(jù)時(shí)會(huì)有導(dǎo)致時(shí)間類型數(shù)據(jù)時(shí)區(qū)錯(cuò)誤的可能嗎?

這個(gè)還真有,還是針對(duì) timestamp 數(shù)據(jù)類型,比如使用 mysqldump 導(dǎo)出 csv 格式的數(shù)據(jù),默認(rèn)這種導(dǎo)出方式會(huì)使用 UTC 時(shí)區(qū)讀取 timestamp 類型數(shù)據(jù),這意味導(dǎo)入時(shí)必須手工設(shè)置 session.time_zone='+00:00'才能保證時(shí)間準(zhǔn)確:

如何避免?mysqldump 也提供了一個(gè)參數(shù) --skip-tz-utc ,意思就是導(dǎo)出數(shù)據(jù)的那個(gè)連接不設(shè)置 UTC 時(shí)區(qū),使用 MySQL 的 gloobal time_zone 系統(tǒng)變量值。

其實(shí) mysqldump 導(dǎo)出 sql 文件時(shí)默認(rèn)也是使用 UTC 時(shí)區(qū),并且會(huì)在導(dǎo)出的 sql 文件頭部帶有 session time_zone 信息,這樣可以保證導(dǎo) SQL 文件導(dǎo)入和導(dǎo)出時(shí)使用相同的時(shí)區(qū),從而保證數(shù)據(jù)的時(shí)區(qū)正確(而導(dǎo)出的 csv 文件顯然不可以攜帶此信息)。需要注意的是 --compact 參數(shù)會(huì)去掉 sql 文件的所有頭信息,所以一定要記得: --compact 參數(shù)得和 --skip-tz-utc 一起使用。

mysql獲取當(dāng)前系統(tǒng)日期和時(shí)間

可以了解一下MySQL的時(shí)間戳(Timestamp)數(shù)據(jù)類型:

默認(rèn)時(shí)間戳(Timestamp)類型的取值范圍為'1970-01-01 00:00:01' UTC至'2038-01-19 03:14:07' UTC,數(shù)據(jù)精確到秒級(jí)別,該取值范圍包含約22億個(gè)數(shù)值,因此在MySQL內(nèi)部使用4個(gè)字節(jié)INT類型來存放時(shí)間戳數(shù)據(jù):

1、在存儲(chǔ)時(shí)間戳數(shù)據(jù)時(shí),先將本地時(shí)區(qū)時(shí)間轉(zhuǎn)換為UTC時(shí)區(qū)時(shí)間,再將UTC時(shí)區(qū)時(shí)間轉(zhuǎn)換為INT格式的毫秒值(使用UNIX_TIMESTAMP函數(shù)),然后存放到數(shù)據(jù)庫(kù)中。

2、在讀取時(shí)間戳數(shù)據(jù)時(shí),先將INT格式的毫秒值轉(zhuǎn)換為UTC時(shí)區(qū)時(shí)間(使用FROM_UNIXTIME函數(shù)),然后再轉(zhuǎn)換為本地時(shí)區(qū)時(shí)間,最后返回給客戶端。

(Timestamp)時(shí)間戳列可以有四張組合定義,其含義分別為:

1、當(dāng)字段定義為timestamp,表示該字段在插入和更新時(shí)都不會(huì)自動(dòng)設(shè)置為當(dāng)前時(shí)間。

2、當(dāng)字段定義為timestamp DEFAULT CURRENT_TIMESTAMP,表示該字段僅在插入且未指定值時(shí)被賦予當(dāng)前時(shí)間,再更新時(shí)且未指定值時(shí)不做修改。

3、當(dāng)字段定義為timestamp ON UPDATE CURRENT_TIMESTAMP,表示該字段在插入且未指定值時(shí)被賦值為"0000-00-00 00:00:00",在更新且未指定值時(shí)更新為當(dāng)前時(shí)間。

4、當(dāng)字段定義為timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示該字段在插入或更新時(shí)未指定值,則被賦值為當(dāng)前時(shí)間。


文章名稱:mysql怎么看主機(jī)時(shí)區(qū) 查看mysql數(shù)據(jù)庫(kù)時(shí)區(qū)
文章URL:http://weahome.cn/article/hgjdhc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部