【问题标题】:Store UTC date string in mysql在mysql中存储UTC日期字符串
【发布时间】:2015-06-20 05:39:24
【问题描述】:

如何在不转换为任何其他格式的情况下将此日期字符串 new Date().toUTCString() 存储在 MySQL 中?我已经尝试将此值保存在DATETIME 列中,并且插入了0000-00-00 00:00:00 而不是Tue, 14 Apr 2015 14:11:40 GMT 之类的东西。

【问题讨论】:

  • 使用VARCHAR 数据类型。
  • @Barmar 这是最好的解决方案吗?
  • 如果要存储字符串,而不是时间值,为什么会有更好的解决方案?
  • @Barmar 它仍然是一个日期时间值。它只是另一种包含时区的格式。为什么 MySQL Datetime 数据类型不支持它?
  • 我明白你的要求。查看STR_TO_DATE 函数。

标签: javascript mysql datetime timezone


【解决方案1】:

你最好在 MySQL 中使用DATETIME 数据类型。

并使用此函数,插入一个 UTC 值:https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString

new Date().toISOString()
"2015-04-14T14:53:07.940Z"

PHP:

(new DateTime())->format('c')

MySQL:

`createdAt` = now()

【讨论】:

  • 他说他不想使用像toISOString这样的其他格式,他想使用toUTCString
  • 我很确定如果我以 ISO 格式存储日期,MySQL 会自动删除时区。
  • 你需要存储时区吗?
  • 那么 Barmar 的回答是不恰当的,因为它只使用 GMT/UTC,就像我的一样。
【解决方案2】:

使用STR_TO_DATE

STR_TO_DATE(:utcstring, '%a, %e %b %Y %H:%i:%s GMT')

【讨论】:

  • GMT 部分不起作用,导致结果为NULL。
  • @MikhailBatcer 我刚刚尝试了select str_to_date('Tue, 14 Apr 2015 14:11:40 GMT', '%a, %e %b %Y %H:%i:%s GMT');,它成功了。
猜你喜欢
  • 2021-04-19
  • 2013-08-10
  • 2010-11-23
  • 2019-01-11
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多