【问题标题】:Mysql - Convert local date in UTC formatMysql - 以UTC格式转换本地日期
【发布时间】:2017-09-14 04:13:38
【问题描述】:

早安,

我正在以这种格式存储 mysql 日期:

在我的 sql 查询中,我想以 UTC 格式获取这些日期。 我已经尝试过 CONVERT_TZ(dt,from_tz,to_tz) 函数,但我无法确定如何获取 from_tz 的日期。我知道 to_tz 将是 'UTC' 或 '+0000'

【问题讨论】:

标签: mysql


【解决方案1】:

试试这个:

select convert_tz(`date`, replace(substring_index(`date`, ' ', -1), '00', ':00'), '+00:00')

编辑:

select convert_tz(`date`, concat(left(substring_index(`date`, ' ', -1), 3), ':', right(substring_index(`date`, ' ', -1), 2)), '+00:00')

【讨论】:

  • 它一直在工作,直到我发现像这样的时间戳:2017-04-17 09:21:33 +0530... 在这种情况下它给出 NULL
  • 是的!这样就可以了。谢谢!
【解决方案2】:

好吧,由于 mysql 忽略了日期中的 TZ 限定符,我建议你做一个半手动的 TZ 转换

select         
    date_add("2017-04-18 15:15:15  +1000", interval substring("2017-04-18 15:15:15 +1000", -5, 3) hour),
    date_add("2017-04-18 15:15:15  +1000", interval substring("2017-04-18 15:15:15 -1000", -5, 3) hour)
;

结果将在您期望的 UTC 时区中

【讨论】:

  • 这是一个很好的方法,但是即使本地时区是 +0600,它也总是会添加时间,在这种情况下,它实际上应该减去时间。
猜你喜欢
  • 2015-06-06
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多