【问题标题】:How do I store iso date in mysql如何在mysql中存储iso日期
【发布时间】:2019-04-12 18:34:59
【问题描述】:

我正在查询一个 API,我得到一个这样的日期:“2019-04-17T14:04:24.224-04:00”。我想这是一个iso日期。如何在 mysql 数据库中存储年、月和日?我想要以下格式“dd/mm/yyyy”。

【问题讨论】:

  • 现在怎么办 - 存储 ISO 日期或存储从 ISO 日期创建的日期表示?到底是哪个数据库?

标签: php mysql isodate


【解决方案1】:

格式是一个显示问题,即它是谁在查看数据的函数,所以在你知道谁在查看数据之前不要这样做。在显示点,您应用用户区域设置所需的格式,并经常根据他们的本地时区进行调整。

MySQL 的DATE 列类型与您一样以ISO-8601 format 表示,因此您应该能够在“T”之后插入减去所有内容。

所以要么在插入之前把它去掉就可以了。

在显示时,您可以使用任何PHP date formatting functions 来获得您想要的确切格式。这通常是特定于语言环境的。

您需要确保表示的时间位于正确的时区。在转换为日期之前,请进行任何必要的转换以使其位于正确的区域,否则您可能会发现一天中的几个小时都得到了错误的日期。

通常你应该:

  • 将日期作为 ISO-8601 格式的值存储在 MySQL 的原生 DATEDATETIME 字段中,并根据用户偏好与本地化格式进行转换。
  • 将任何时间值存储为 UTC,并根据用户偏好与本地时间进行转换。

【讨论】:

    【解决方案2】:
    date("d-m-Y", strtotime("2019-04-17T14:04:24.224-04:00"));
    

    就这样吧,

    【讨论】:

    • 不要这样做。 MySQL 更喜欢 YYYY-MM-DD 格式的 ISO-8601 日期。
    • 你是对的,但是他要求以特定格式提供,所以我以该格式提供了它
    • MySQL 的 DATE 列不会处理像 DD-MM-YYYY 这样的模棱两可的值。
    • 然后将其存储在varchar中。如果他想要以特定格式保存并这样存储,那是唯一的选择...
    • 我在这里建议两件事:A) DD-MM-YYYY 是一个本地化,它对您的数据库没有任何意义,并且首先不属于数据库。 B)如果/必要时转换为用户喜欢的任何本地化格式。也许他们想要MM-DD-YYYYMmm dd, YYYY,你不知道。这就是为什么您将其保存以备后用。 ISO 日期可以索引范围并计算,这种奇怪的格式不能。
    【解决方案3】:

    试试这个!

    update TABLENAME 
    set date_columnname = LEFT(date_present_columnname,10)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 2022-01-08
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      相关资源
      最近更新 更多