繁体   English   中英

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

[英]phpmyadmin export of date int(11) to CSV dd/mm/yy format

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

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

当我从phpmyadmin导出时,数据自然导出为数字,例如'1325336400',但我希望将其显示为01/01/2012或类似格式。 有什么办法可以做到吗?

提前谢谢了

物权法

如果您以32位整数存储“日期数据”(按您的说法),那么我猜您正在使用* nix时间戳值(自1970年1月1日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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM