自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)和PHP的知識(shí)點(diǎn)

數(shù)據(jù)庫(kù) MySQL
此文章主要描述的是PHP和MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)的一些小知識(shí),以及對(duì)其實(shí)際操作中需要用到的相關(guān)代碼的描述,以下就是文章的具體內(nèi)容描述。

以下的文章主要介紹的是關(guān)于PHP和MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)的一些小知識(shí),但是因?yàn)槲視簳r(shí)使用國(guó)外的空間,所以在我發(fā)布 Blog 的時(shí)候,時(shí)間總是出問題。依據(jù)我以前編寫程序的經(jīng)驗(yàn),這是MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)的問題。

這個(gè)問題解決起來并不難,寫下我的解決途徑以便日后參考。

PHP 腳本端的市區(qū)設(shè)置可以在 php.ini 下設(shè)置 date.timezone 鍵的值為 'Asia/Shanghai' 即可。但是通常共享虛擬主機(jī)本身沒有修改 php.ini 權(quán)限。這個(gè)時(shí)候就應(yīng)該在程序公共部分加入

ini_set('date.timezone','Asia/Shanghai'北京租車網(wǎng) 北京搬家公司);

動(dòng)態(tài)修改 php.ini 的設(shè)置。之后可以測(cè)試一下時(shí)間是否正確:

 

  1. var_dump(date()); 

如果服務(wù)器的本地時(shí)間是正確的,那么一般就能解決問題了。附,PHP 5.1 以上提供了專門的函數(shù)修改對(duì)應(yīng)的時(shí)區(qū):

 

  1. date_default_timezone_set('Asia/Shanghai'); 

建議使用此函數(shù),因?yàn)楦ㄓ靡恍?duì)應(yīng) 'Asia/Shanghai' 其他可以使用的大陸MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)還有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi (依次為重慶,上海,烏魯木齊);港臺(tái)地區(qū)可用:

Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次為澳門,香港,臺(tái)北);還有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京漏調(diào)了。

但是,在我修改成功 PHP 端的時(shí)區(qū)以后發(fā)現(xiàn)日期并沒有正確的記錄下來。這個(gè)時(shí)候我考慮是否是數(shù)據(jù)庫(kù)的問題。果不其然,因?yàn)槌绦虿迦氲暮瘮?shù)并沒有調(diào)用 PHP 的時(shí)間,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。這個(gè)時(shí)候就要考慮是否能修改 MySQL 方面的時(shí)區(qū)。

參考了 MySQL 的文檔,發(fā)現(xiàn)一個(gè)可行的 SQL 語(yǔ)句為:

 

  1. SET GLOBAL time_zone = '+8:00';  

其中 '+8:00' 是東八區(qū)的表示方法,其他的市區(qū)依次類推。而我在數(shù)據(jù)庫(kù)模型中插入改語(yǔ)句發(fā)現(xiàn)權(quán)限不夠(該死的虛擬主機(jī)提供商)。接下來我調(diào)試了很多語(yǔ)句,比如:

 

  1. DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR); 

顯示時(shí)區(qū)的 SQL 語(yǔ)句:北京租車網(wǎng) 北京搬家公司

 

  1. SHOW VARIABLES LIKE 'system_time_zone' 

等等。而由于 MySQL 權(quán)限的限制并沒有徹底的解決方案。我 Google 了下,發(fā)現(xiàn)老外這個(gè)有一個(gè)非常好的解決方案。但是他需要修改每條插入數(shù)據(jù)的 SQL 語(yǔ)句。這樣的方案并不是非常的有效,一旦MySQL數(shù)據(jù)庫(kù)時(shí)區(qū)改成正常,那么相應(yīng)的 SQL 語(yǔ)句又要改回來。

而我考慮既然 PHP 端已經(jīng)可以正確的解決時(shí)間的問題了。MySQL 數(shù)據(jù)庫(kù)方面雖然可以使用相應(yīng)的函數(shù)解決,但是如果日后遷移到別的主機(jī)環(huán)境又要改回來。而相應(yīng)的字段是一個(gè) TIMESTAMP 類型的,默認(rèn)的值為 CURRECT_TIMESTAMP,當(dāng)然是可以指定時(shí)間的。

那么我的做法就是讓 PHP 插入當(dāng)前正確的時(shí)間,這樣雖然程序方面需要做相應(yīng)的修改。不過日后配置修改起來只要修改一處就可以了。***插入數(shù)據(jù)庫(kù)的時(shí)間注意一下格式:

date('Y-m-d H:i:s')這樣就可以解決問題了。
 

【編輯推薦】

  1. MySQL基本操作,新手入門寶典
  2. MySQL常用命令大匯總
  3. MySQL數(shù)據(jù)庫(kù)安全設(shè)置的操作流程
  4. 實(shí)現(xiàn)MySQL 用戶密碼的設(shè)置步驟
  5. 使用MySQL 數(shù)據(jù)庫(kù)出現(xiàn)的困難解決

 

責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2010-05-26 17:40:14

MySQL數(shù)據(jù)庫(kù)

2018-01-25 12:50:33

數(shù)據(jù)庫(kù)OracleROWNUM

2020-10-14 12:45:00

數(shù)據(jù)庫(kù)MySQL內(nèi)存

2021-09-27 09:18:31

MySQL數(shù)據(jù)類型

2010-07-29 11:31:53

使用DB2

2018-11-27 15:51:10

MySQL數(shù)據(jù)庫(kù)查詢優(yōu)化

2019-10-17 15:10:33

PHP程序員Linux

2010-07-30 15:37:53

使用DB2

2010-08-03 15:15:22

使用DB2數(shù)據(jù)庫(kù)

2018-11-28 14:30:09

MySQLL索引設(shè)計(jì)數(shù)據(jù)庫(kù)

2020-07-16 15:00:56

MySQL索引數(shù)據(jù)庫(kù)

2021-02-24 09:45:21

數(shù)據(jù)庫(kù)工具技術(shù)

2020-10-10 14:19:08

數(shù)據(jù)庫(kù)知識(shí)點(diǎn)

2020-10-12 17:02:42

大數(shù)據(jù)IT技術(shù)

2015-03-13 11:10:03

PHP初學(xué)者PHP知識(shí)點(diǎn)PHP困惑

2016-05-30 17:31:34

Spring框架

2010-08-17 14:56:00

HCNE認(rèn)證

2011-04-15 12:25:21

BGP路由

2019-10-24 09:09:28

MySQLACIDJava

2020-06-19 16:25:19

MySQL日志文件數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)