phpmyadmin将date int(11)导出为CSV dd / mm / yy格式

时间:2014-03-22 11:57:06

标签: mysql sql phpmyadmin

我是SQl的新手并尝试通过phpmyadmin进行转储。

目前,日期数据以int(11)的形式存储在我的数据库中。

当我从phpmyadmin导出时,数据自然会导出为
 1325336400'等数字。但我希望这显示为01/01/2012或类似的格式。我有什么方法可以做到这一点吗?

非常感谢提前

只求

1 个答案:

答案 0 :(得分:1)

如果您将“日期数据”(如您所说)存储在32位整数中,我猜您使用的是* nix时间戳值(自1-jan-1970 00:00 UTC纪元以来的秒数)。

(你知道这可能会在2038年的某个时候溢出,对吗?http://en.wikipedia.org/wiki/Year_2038_problem

正如您所发现的那样,phpmyadmin很难使用这些值。

MySQL有一个TIMESTAMP数据类型,它也使用* nix风格的时间戳。 (它不会溢出; MySQL开发人员做了正确的事。)

您确实需要将日期数据转换为TIMESTAMP数据类型。否则处理时间将是一个巨大的痛苦,永远。这是如何做到的。

首先,以这种方式向表中添加一列

ALTER TABLE mytable ADD COLUMN ts TIMESTAMP AFTER myinttimestamp

然后使用您已有的值填充新的ts列。

UPDATE TABLE mytable SET ts = FROM_UNIXTIME(myinttimestamp)

接下来,更改新列的定义,使其不允许使用NULL值,并将当前时间用作默认值:

ALTER TABLE mytable 
     CHANGE ts
            ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL

最后,如果你想要,你可以删除旧的列,其中包含INT值。

ALTER TABLE mytable DROP COLUMN myinttimestamp

(你应该考虑在你的桌子副本上尝试所有这些;它会发生错误并弄乱你的数据)。

当您使用TIMESTAMP数据类型时,MySQL会尽最大努力在UTC(时区不敏感)时间内部存储所有这些时间戳,并根据您设置的方式在显示时将它们转换为本地时间

 SET time_zone = 'Asia/Vladivostok' 

或其他什么。当您将它们放入数据库时​​,它还会将它们从本地时间转换为UTC时间。

这是一个写作。

https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html