为什么我不能在mysql / phpmyadmin中存储时间戳?

时间:2015-10-29 11:04:54

标签: mysql phpmyadmin

我有一个在phpMyAdmin中创建的表,它包含两个字段:start_time和text_modified。看起来像这样

http://i.imgur.com/fHcWyOh.png

所以start_time可能为null。 当我在phpmyadmin中填充数据时,我可以选择应该表示为此时间戳的日期和时间:

http://i.imgur.com/XvpjuPS.png

执行此操作后,我希望在此字段中存储时间戳值而不是日期时间。但当我进行查询SELECT start_time from table时,我看到了这一点:

http://i.imgur.com/Nwam2e1.png

所以我假设它只是我的管理员自动向我显示所有日期作为日期时间值而不是时间戳。但现在当我查询时:SELECT FROM_UNIXTIME(start_time) FROM table我得到了这些结果:

http://i.imgur.com/gOZdoU3.png

而我在这里想要正常的约会。这里出了什么问题?

1 个答案:

答案 0 :(得分:2)

在时间戳中,您可以插入日期时间值,这些值在内部存储为整数(您可能知道的1970-01-01以来的秒数)。选择它们时,它们将显示为日期和时间。

到目前为止一切顺利。

如果您有0000-00-00 00:00:00之类的值,则可能会为整数值插入NULL值或无效日期或日期超出范围。使用FROM_UNIXTIME()在这里没有意义,因为此函数从整数值计算日期和时间值。 timestamp列的整数值就像我说的仅在内部使用。因此,对于有效日期,您会获得NULL值,而对于无效日期,您会获得1970-01-01,因为这些值可能被视为00秒,因为1970-01-01 00:00:00是惊喜,{ {1}}。