MySQL数据库时区和PHP的知识点

数据库 MySQL
此文章主要描述的是PHP和MySQL数据库时区的一些小知识,以及对其实际操作中需要用到的相关代码的描述,以下就是文章的具体内容描述。

以下的文章主要介绍的是关于PHP和MySQL数据库时区的一些小知识,但是因为我暂时使用国外的空间,所以在我发布 Blog 的时候,时间总是出问题。依据我以前编写程序的经验,这是MySQL数据库时区的问题。

这个问题解决起来并不难,写下我的解决途径以便日后参考。

PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可。但是通常共享虚拟主机本身没有修改 php.ini 权限。这个时候就应该在程序公共部分加入

ini_set('date.timezone','Asia/Shanghai'北京租车网 北京搬家公司);

动态修改 php.ini 的设置。之后可以测试一下时间是否正确:

 

  1. var_dump(date()); 

如果服务器的本地时间是正确的,那么一般就能解决问题了。附,PHP 5.1 以上提供了专门的函数修改对应的时区:

 

  1. date_default_timezone_set('Asia/Shanghai'); 

建议使用此函数,因为更通用一些。对应 'Asia/Shanghai' 其他可以使用的大陆MySQL数据库时区还有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi (依次为重庆,上海,乌鲁木齐);港台地区可用:

Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次为澳门,香港,台北);还有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京漏调了。

但是,在我修改成功 PHP 端的时区以后发现日期并没有正确的记录下来。这个时候我考虑是否是数据库的问题。果不其然,因为程序插入的函数并没有调用 PHP 的时间,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。这个时候就要考虑是否能修改 MySQL 方面的时区。

参考了 MySQL 的文档,发现一个可行的 SQL 语句为:

 

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

其中 '+8:00' 是东八区的表示方法,其他的市区依次类推。而我在数据库模型中插入改语句发现权限不够(该死的虚拟主机提供商)。接下来我调试了很多语句,比如:

 

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

显示时区的 SQL 语句:北京租车网 北京搬家公司

 

  1. SHOW VARIABLES LIKE 'system_time_zone' 

等等。而由于 MySQL 权限的限制并没有彻底的解决方案。我 Google 了下,发现老外这个有一个非常好的解决方案。但是他需要修改每条插入数据的 SQL 语句。这样的方案并不是非常的有效,一旦MySQL数据库时区改成正常,那么相应的 SQL 语句又要改回来。

而我考虑既然 PHP 端已经可以正确的解决时间的问题了。MySQL 数据库方面虽然可以使用相应的函数解决,但是如果日后迁移到别的主机环境又要改回来。而相应的字段是一个 TIMESTAMP 类型的,默认的值为 CURRECT_TIMESTAMP,当然是可以指定时间的。

那么我的做法就是让 PHP 插入当前正确的时间,这样虽然程序方面需要做相应的修改。不过日后配置修改起来只要修改一处就可以了。***插入数据库的时间注意一下格式:

date('Y-m-d H:i:s')这样就可以解决问题了。
 

【编辑推荐】

  1. MySQL基本操作,新手入门宝典
  2. MySQL常用命令大汇总
  3. MySQL数据库安全设置的操作流程
  4. 实现MySQL 用户密码的设置步骤
  5. 使用MySQL 数据库出现的困难解决

 

责任编辑:佚名 来源: 博客园
相关推荐

2010-05-26 17:40:14

MySQL数据库

2018-01-25 12:50:33

数据库OracleROWNUM

2021-09-27 09:18:31

MySQL数据类型

2020-10-14 12:45:00

数据库MySQL内存

2010-07-29 11:31:53

使用DB2

2018-11-27 15:51:10

MySQL数据库查询优化

2019-10-17 15:10:33

PHP程序员Linux

2010-08-03 15:15:22

使用DB2数据库

2010-07-30 15:37:53

使用DB2

2018-11-28 14:30:09

MySQLL索引设计数据库

2021-02-24 09:45:21

数据库工具技术

2020-10-12 17:02:42

大数据IT技术

2020-10-10 14:19:08

数据库知识点

2020-07-16 15:00:56

MySQL索引数据库

2016-05-30 17:31:34

Spring框架

2015-09-28 11:01:41

PHP开发抓取知乎用户

2015-03-13 11:10:03

PHP初学者PHP知识点PHP困惑

2019-11-25 21:46:12

数据湖云计算数据仓库

2014-12-02 10:56:47

TCPIP交互数据流

2010-08-17 14:56:00

HCNE认证
点赞
收藏

51CTO技术栈公众号