【问题标题】:MySQL Timestamp return as datetime, not integerMySQL时间戳返回为日期时间,而不是整数
【发布时间】:2016-12-22 10:34:10
【问题描述】:

我有 MySQL 表,其中列 _updatetimestamp 类型。我有问题,不明白,为什么当我选择此列时,返回的是日期时间格式,而不是整数? 在 JavaScript 中,Unix 时间戳以整数形式返回,在 PHP 中 time() 以整数形式返回,但在 MySQL 中,这是日期时间?为什么?

我知道,我可以使用 bigint 类型,但我想在从 phpmyadmin 插入数据时向行添加时间戳,并在更新数据时更新时间戳(这只能在时间戳类型列中设置)。

【问题讨论】:

  • 文档中没有任何地方说它是 Unix 时间戳。
  • 你有 timestamp 数据类型并且你得到 timestamp 作为返回值,除非你操纵它返回 unix_timestamp
  • 我在配置 phpmyadmin 中有默认设置,但是当我有插入数据时,_update 以日期时间格式输入,当我想要数字值时
  • 我找到了 2 个 sql 函数来转换数据:UNIX_TIMESTAMP() 和 FROM_UNIXTIME()

标签: mysql sql timestamp


【解决方案1】:

我猜怀疑来自 timestamp 总是指Unix time 的错误假设。然而,它是一个相当通用的英文单词,在 IT 中被广泛用于相当 different time-related concepts

MySQL TIMESTAMP column type的情况下,虽然它确实在内部存储为Unix时间戳:

TIMESTAMP 值存储为自纪元以来的秒数 ('1970-01-01 00:00:00' UTC)。

...这样的细节大多是无关紧要的(就像大多数内部表示一样),因为接口与任何其他日期类型相同:固定的人类可读格式的字符串,例如:

'2038-01-19 03:14:07.999999'

而且,与任何其他日期列类型一样,只要您有/需要不同的字符串格式,您就有相应的函数来转换/转换为字符串:

【讨论】:

  • 但我不明白,为什么输入timestamp 不是返回数字?在许多人中写到这是秒数,并且在许多程序员语言中,函数返回秒数,数字,而不是日期时间:-) 现在,在我的项目中,我使用这个函数来转换日期时间 UNIX_TIMESTAMP() 和 FROM_UNIXTIME()
  • 这正是我的意思时间戳总是指 Unix 时间的错误假设
  • 我遇到了同样的问题,因为名称时间戳被定义为秒数,我们确实期望一个整数,但是数据库以“日期时间”格式存储数字,在尝试时造成混淆格式化数字。
  • @Gustavo 我很乐意纠正或改写我的回答中的任何不正确的陈述(我不是母语人士,我对“时间戳”这个词的含义的假设很容易有缺陷)但我发现的链接似乎支持它只是时间信息,甚至不需要是一个数字的想法。另外,MySQL 确实将此列类型存储为数字。
猜你喜欢
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2012-11-26
  • 2013-06-16
  • 1970-01-01
相关资源
最近更新 更多