mysql时区和服务器时区,mysql数据库时区是什么

本文目录一览:

mysql 时间 和 系统时间 不一致

你的Linux系统时间是CST(你的情况,应该是美国东部标准时间)。

应该是你时区设置不对。

美国东部时间是GMT-5,北京时间是GMT+8,中间相隔13个小时,正好符合你现在情况。

调整一下你的Linux系统时间,确认一下时区,应该就可以了。。

Good luck。

如何修改mysql 时区 为system

1。在mysql的命令模式下使用

mysql

select

CURTIME();

mysql

select

now();

看当前时间是否正确,可以看到mysql当前使用的是那一个时区的时间。

2。在mysql命令行中更改时区

mysql

SET

time_zone

=

‘+8:00’;

#

此为北京时,我们所在东8区

mysql

flush

privileges;

#

立即生效

此时mysql时区已更改正确,与系统时区都使用为

Shanghai时间了。

####

这种方法好像只能在终端上使用,退出终端后时间又会变成原来的,看来只能重启mysql了。

3。重启mysql也应没有问题,此时mysql会主动读取系统时间。

方法二:

如果mysql数据库可以重启,直接重启,mysql应可以立即主动读取系统时间,如果不行则更改mysql的配置文件(mysql.cnf)

在my.cnf的

[mysqld]区域中加上

default-time_zone

=

‘+8:00’

#此为北京时。

补充:

如果想临时解决时间显示问题,可以用php或其他语言动态修改下mysql的时区。

具体方法:

在mysql_connect()下使用mysql_query(“SET

time_zone

=

‘+8:00′”)。

这样可以在保证你不重启的情况下改变时区。但是mysql的某些系统函数还是不能用如:now()。

MySQL:一文弄懂时区&time_zone

你还在被以下问题困扰吗:

MySQL的安装规范中应该设置什么时区?

JAVA应用读取到的时间和北京时间差了14个小时,为什么?怎么解决?

已经运行一段时间的业务,修改MySQL的时区会影响已经存储的时间类型数据吗?

迁移数据时会有导致时间类型数据时区错误的可能吗?

看完这篇文章,你能解决上面所有的疑惑。首先出场的是和时区相关的启动参数和系统变量。

如果要在 MySQL 启动时就指定时区,则应该使用启动参数: default-time-zone ,示例:

启动后我们可以看到控制时区的系统变量,其中 time_zone 变量控制时区,在MySQL运行时可以通过 set 命令修改(注意:不可以写在 my.cnf 中):

启动参数和系统变量的可用值遵循相同的格式:

system_time_zone 变量只有全局值没有会话值,不能动态修改,MySQL 启动时,将尝试自动确定服务器的时区,并使用它来设置 system_time_zone 系统变量, 此后该值不变。当 time_zone=’system’ 时,就是使用的这个时区,示例中 time_zone 就是 CST,而 CST 在 RedHat 上就是东八区:

概括一下就两点:

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

timestamp 数据类型会存储当时session的时区信息,读取时会根据当前 session 的时区进行转换;而 datetime 数据类型插入的是什么值,再读取就是什么值,不受时区影响。也可以理解为已经存储的数据是不会变的,只是 timestamp 类型数据在读取时会根据时区转换:

关于时区所有明面上的东西都在上面了,我们前面提到的困扰就是在暗处的经验。

1. MySQL的安装规范中应该设置什么时区?

对于国内的业务了,在 my.cnf 写入 default-time-zone=’+08:00′ ,其他地区和开发确认取对应时区即可。

为什么不设置为 system 呢?使用系统时间看起来也是个不错的选择,比较省事。不建议的原因有两点:

2. JAVA应用读取到的时间和北京时间差了14个小时,为什么?怎么解决?

这通常是 JDBC 参数中没有为连接设置时区属性(用 serverTimezone 参数指定),并且MySQL中没有设置全局时区,这样MySQL默认使用的是系统时区,即 CST。这样一来应用与MySQL 建立的连接的 session time_zone 为 CST ,前面我们提到 CST 在 RedHat 上是 +08:00 时区,但其实它一共能代表4个时区:

JDBC在解析CST时使用了美国标准时间,这就会导致时区错误。要解决也简单:一是遵守上面刚说到的规范,对MySQL显式地设置’+08:00’时区;二是JDBC设置正确的 serverTimezone。

3. 已经运行一段时间的业务,修改MySQL的时区会影响已经存储的时间类型数据吗?

完全不会,只会影响对 timestamp 数据类型的读取。这里不得不提一句,为啥要用 timestamp?用 datetime 不香吗,范围更大,存储空间其实差别很小,赶紧加到开发规范中吧。

4. 迁移数据时会有导致时间类型数据时区错误的可能吗?

这个还真有。

如何避免?mysqldump 也提供了一个参数 –skip-tz-utc ,意思就是导出数据的那个连接不设置 UTC 时区,使用 MySQL 的 global time_zone 系统变量值。

其实 mysqldump 导出 sql 文件时默认也是使用 UTC 时区,并且会在导出的 sql 文件头部带有 session time_zone 信息,这样可以保证导 SQL 文件导入和导出时使用相同的时区,从而保证数据的时区正确(而导出的 csv 文件显然不可以携带此信息)。需要注意的是 –compact 参数会去掉 sql 文件的所有头信息,所以一定要记得: –compact 参数得和 –skip-tz-utc 一起使用。

MYSQL时区相关的问题

目前你遇到的问题大概是 PHP 获取的时间和 MySQL中获取的时间存在时差

比较直接的解决方案是在 PHP 和 MySQL 中遵循同一时区约定

PHP 在5.0 之后应该可以直接在代码中设定时区

date_default_timezone_set(‘PRC’);

MySQL 也可以通过修改配置文件 my.ini 或者 my.cnf 确保时区正确

default-time-zone=timezone

问题是你的MySQL服务器可能是在某台美国服务器上租借的,没法修改

所以解决的方法只能是:

修改插件源代码,将 SQL 语句改为

select forum_id, count(post_id) todayposts

from ‘ .POSTS_TABLE. ‘

where date(from_unixtime(post_time)) = date(DATE_ADD(now(), INTERVAL 14 HOUR))

group by forum_id

其中的 DATE_ADD(now(), INTERVAL 14 HOUR) 是-14 还是 14,这需要你仔细考虑下

MySQL怎么设置时区为格林威治时间。

MySQL 时区默认是服务器的时区。

查看:

复制代码代码如下:

mysql SHOW VARIABLES LIKE ‘%time_zone%’;

+——————+——–+

| Variable_name| Value |

+——————+——–+

| system_time_zone | CST|

| time_zone| SYSTEM |

+——————+——–+

2 rows IN SET (0.00 sec)

可以通过修改my.cnf, 在 [mysqld] 之下加来修改时区。

default-time-zone=timezone

例如:

default-time-zone=’+8:00′

修改后记得重启msyql。

注意一定要在 [mysqld] 之下加 ,否则会出现错误: unknown variable ‘default-time-zone=+8:00′

另外也可以通过命令:

SET time_zone=timezone

例如:比如北京时间(GMT+0800)

SET time_zone=’+8:00′

这个和php的时区设置又有点差别,比如北京时间在php中是:

date_default_timezone_set(‘Etc/GMT-8’);

美国pst时间(GMT-08:00)

SET time_zone = ‘-8:00’;

复制代码代码如下:

mysql SET time_zone = ‘+8:00’;

Query OK, 0 rows affected (0.00 sec)

mysql SELECT now();

+———————+

| now() |

+———————+

| 2008-12-29 11:26:36 |

+———————+

1 row IN SET (0.00 sec)

mysql SET time_zone = ‘-8:00’;

Query OK, 0 rows affected (0.00 sec)

mysql SELECT now();

+———————+

| now() |

+———————+

| 2008-12-28 19:27:09 |

+———————+

1 row IN SET (0.00 sec)

mysql修改和查看时区(十五)

1. 查看时区命令

2. GMT、UTC、DST、CST时区代表的意义

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.  修改时区

3.1 仅修改当前会话的时区,停止会话失效(CET)

3.2 修改全局的时区配置

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/279312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-20 15:03
下一篇 2024-12-20 15:03

相关推荐

  • 如何修改mysql的端口号

    本文将介绍如何修改mysql的端口号,方便开发者根据实际需求配置对应端口号。 一、为什么需要修改mysql端口号 默认情况下,mysql使用的端口号是3306。在某些情况下,我们需…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 服务器安装Python的完整指南

    本文将为您提供服务器安装Python的完整指南。无论您是一位新手还是经验丰富的开发者,您都可以通过本文轻松地完成Python的安装过程。以下是本文的具体内容: 一、下载Python…

    编程 2025-04-29
  • STUN 服务器

    STUN 服务器是一个网络服务器,可以协助网络设备(例如 VoIP 设备)解决 NAT 穿透、防火墙等问题,使得设备可以正常地进行数据传输。本文将从多个方面对 STUN 服务器做详…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • 解决docker-compose 容器时间和服务器时间不同步问题

    docker-compose是一种工具,能够让您使用YAML文件来定义和运行多个容器。然而,有时候容器的时间与服务器时间不同步,导致一些不必要的错误和麻烦。以下是解决方法的详细介绍…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • MySQL递归函数的用法

    本文将从多个方面对MySQL递归函数的用法做详细的阐述,包括函数的定义、使用方法、示例及注意事项。 一、递归函数的定义 递归函数是指在函数内部调用自身的函数。MySQL提供了CRE…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28

发表回复

登录后才能评论