【问题标题】:Why did this data type conversion happen in MySQL?为什么在 MySQL 中会发生这种数据类型转换?
【发布时间】:2018-06-18 09:38:00
【问题描述】:

我有一个存储网页性能统计信息的表格,包括每个用户的请求开始和结束时间的时间戳。时间戳保存为数据库中的 INT 字段,但作为字符串从前端发送到 PHP,PHP 反过来为我做了一些幕后的类型转换,并将每个时间戳转换为以下 INT:

2147483647

现在,通过即时将原始输入转换为整数解决了这个问题,所以我的问题不是如何解决这个问题,而是为什么会发生这种精确的转换以及为什么会发生这种情况输出?这已经用各种时间戳字符串进行了测试,但它们都返回了相同的输出:

1515153744264 -> 2147483647

亲爱的知识渊博的深奥 SQL 向导人们,在较低级别发生了什么?

【问题讨论】:

  • 因为2147483647 是您的字段类型的最大值?
  • 有道理,不知道这个。谢谢!

标签: php mysql type-conversion


【解决方案1】:

要保存值,string 必须转换为 int。而int的最大值为2147483647

【讨论】:

  • (使用 32 位 PHP 时)对于 2038 年 1 月 19 日之前的 unix 时间戳仍然有效,但如果该时间戳是毫秒而不是秒?!?
  • 1515153744264 实际上是毫秒;除以 1000 得到 1515153744,即 2018 年 1 月 5 日 @ 12:02 (UTC)....如果您需要毫秒精度,除以 1000 并存储为浮点数
猜你喜欢
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多