【问题标题】:Why I can't store a timestamp in mysql / phpmyadmin?为什么我不能在 mysql / phpmyadmin 中存储时间戳?
【发布时间】:2015-10-29 11:04:53
【问题描述】:

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

因此 start_time 可能为空。 当我在 phpmyadmin 中填写数据时,我可以选择应该表示为这个时间戳的日期和时间:

这样做后,我希望在此字段中存储时间戳值而不是日期时间。但是当我查询SELECT start_time from table 时,我看到了这个:

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

相反,我想在这里正常约会。这里出了什么问题?

【问题讨论】:

  • 试试CAST(start_time AS UNSIGNED INTEGER)

标签: mysql phpmyadmin


【解决方案1】:

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

到目前为止一切顺利。

当您有 0000-00-00 00:00:00 之类的值时,您可能插入了 NULL 值或无效日期或整数值超出范围的日期。在这里使用FROM_UNIXTIME() 没有意义,因为此函数根据整数值计算日期和时间值。时间戳列的这个整数值就像我说的只在内部使用。因此,您会得到NULL 的有效日期值和1970-01-01 的无效日期值,因为它们可能被视为00 秒,因为1970-01-01 00:00:00 是,令人惊讶的是,1970-01-01 00:00:00

【讨论】:

  • 谢谢。那么在数据库中存储时间戳最安全的方法是什么?我应该把它改成int吗?如果是这样,使用时间戳字段有什么好处?
  • “最安全的方式”是什么意思。您遇到什么问题使任何事情变得不安全?与日期时间相比,时间戳的好处是例如更少的数据存储要求(4 字节对 8 字节)。关于不同数据类型之间的所有差异,我建议查看manual
猜你喜欢
  • 2016-04-11
  • 2011-09-25
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多