【问题标题】:how to fetch datetime along with GMT appended with it in mysql?如何在mysql中获取日期时间以及附加的GMT?
【发布时间】:2015-04-02 08:56:24
【问题描述】:

我在mysql中寻找“如何获取日期时间以及附加的UTC”。但我在stackoverflow中找不到任何合适的解决方案。

许多人建议通过分配 default_time_zone 在查询本身中将日期时间转换为所需的 UTC,但我想在用户端转换日期时间取决于他们的系统设置。

我有一个名为“created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP”的字段

每当我获取数据时,我都会得到日期为“yyyy-mm-dd hh:mm:ss”(例如2015-04-01 11:30:25 em>)

但我想要的格式是“2015-04-01 11:30:25 +5:30”,其中(+5:30 是服务器的 default_time_zone ) 以便我可以在用户端将其转换为“2015-04-01 10:30:25”(假设用户的时区为 +4:30

所以我的问题是如何在 mysql 中获取日期时间以及附加的 UTC,以便我可以在用户端根据他们的系统设置进行转换?

【问题讨论】:

  • 您的日期是如何保存在数据库中的?当您在数据库中保存日期时,它会保存什么时区?提供一些样本数据和预期结果。
  • @AbhikChakraborty 完成了兄弟。检查它..
  • 您将其保存在timestamp 类型的字段中。
  • @N.B.请检查我编辑的问题。
  • UTC,说白了就是“无时区”,这很棒,因为您可以应用时区并移动时间偏移量。您想要做的是保存您使用他们的时区从用户那里获得的时间,然后您想要为另一个时区的另一个用户抵消该时间。这是错误的,而且工作量太大。您将所有日期保存为 UTC(即timestamp 列),然后将所有日期作为 UTC 提供 - 之后,您说您使用用户的时区 - 这是完美的,因为那时您的工作非常容易。基本上只需将所有内容保存为 UTC,就完成了。

标签: mysql datetime utc


【解决方案1】:

解决了!我没有附加时区,而是将服务器的默认时区设置为 +00:00,所以每当我插入数据时,日期就会像(例如。2015-05-11 05:30:10)这是基于服务器的默认时区。

在用户端,我获取数据并将根据系统设置更改日期时间格式。例如:如果用户的系统时区是+4:00,那么日期将从

转换

2015-05-11 05:30:10 到 2015-05-11 09:30:10.

谢谢,

【讨论】:

    【解决方案2】:

    您可以使用date_format() 函数或concat 函数在选择时附加任何您想要的内容

    select date_format('2015-04-01 11:30:25','%Y-%m-%d %H:%i:%s +5:30') as date ;
    +---------------------------+
    | date                      |
    +---------------------------+
    | 2015-04-01 11:30:25 +5:30 |
    +---------------------------+
    1 row in set (0.03 sec)
    
    mysql> select concat('2015-04-01 11:30:25',' +5:30') as date ;
    +---------------------------+
    | date                      |
    +---------------------------+
    | 2015-04-01 11:30:25 +5:30 |
    +---------------------------+
    1 row in set (0.03 sec)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-02
      • 2010-09-23
      • 2013-06-10
      • 2013-05-28
      • 2022-11-07
      • 2011-06-01
      • 2012-09-20
      • 1970-01-01
      相关资源
      最近更新 更多