首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL年2038年易受伤害

问MySQL年2038年易受伤害
EN

Database Administration用户
提问于 2012-10-02 20:41:17
回答 1查看 1.2K关注 0票数 6

我当时正在研究德鲁帕尔,并问了这个问题:

https://drupal.stackexchange.com/questions/45443/why-timestamp-format-was-chosen-for-users-created-field/45446#45446

我决定检查一下,CMS在Unix时代结束后将如何运行。将本地日期设置为01.01.2040并重新启动。

令我惊讶的是,这个网站根本没有工作。原因是,MySQL倒下了。我尝试手动连接,得到了一个错误:

代码语言:javascript
复制
>mysql -uroot -ppass
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

我在Win XP上使用MySQL 5.5。为什么会有这么奇怪的行为?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-10-02 20:58:29

其基本原理可能是基于MySQL和OS (在本例中,Windows )更易于处理的日期时间表示。

  • 日期时间占用8个字节。
  • 时间戳占用4个字节

他们的数据和时间范围会有很大的不同。注意MySQL文档中的进一步差异

日期时间类型用于包含日期和时间部分的值。MySQL以‘YYYY:MM:SS’格式检索和显示日期时间值。支持范围是'1000-01-01 :00:00:00“到'9999-12-31 23:59:59‘。时间戳数据类型用于包含日期和时间部分的值。时间戳的范围是'1970-01-01 : 00:00:01‘世界协调时- '2038-01-19 03:14:07’世界协调时。MySQL将时间戳值从当前时区转换为UTC存储,并从UTC转换回当前时区进行检索。(对于其他类型,如DATETIME,则不会发生这种情况。)默认情况下,每个连接的当前时区是服务器的时间。时区可以按每个连接设置.只要时区设置保持不变,就会得到存储的相同值。如果存储时间戳值,然后更改时区并检索值,则检索的值与存储的值不同。这是因为在两个方向上都没有使用相同的时区进行转换。当前时区作为time_zone系统变量的值可用。有关更多信息,请参见10.6节“MySQL服务器时区支持”。

由于MySQL和TimeZone都支持TimeZone,所以让mysqld更多地了解TimeZone可能对MySQL最有利。这可能是一个秘密的动机,让您的MySQL数据库离开Windows并进入Linux。(我的阴谋论)

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/25302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档