【问题标题】:How to compare between different date formats?如何比较不同的日期格式?
【发布时间】:2018-07-01 09:58:58
【问题描述】:

我将四种不同的日期格式存储在数据库中,然后显示最新的。

四种不同的格式:

$a = '27. júní 2018 04:53';
$b = 'Friday, 09 March 2018';
$c = 'Fri, 29 Jun 2018 11:00:00 GMT';
$d = 'Mon, 18 Jun 2018 06:52:20 +0000';

它们将存储在 MYSQL 数据库中。

我应该如何处理它们?

SQL 或 MYSQL 日期类型可以完成这项工作吗?

我应该使用strtotime() 转换它们吗?

我应该从特定的数据中提取一些数据来匹配男性吗?

【问题讨论】:

  • SQL 或 MYSQL 日期类型可以完成这项工作吗? 也许您应该在提问之前尝试一下。请张贴您尝试过的代码并说明哪部分不起作用。
  • 在存储到表格时进行转换。
  • @RickJames,您是指在存储之前还是之后?
  • 存储 DATETIMETIMESTAMP -- '2018-06-18 06:52:20`;没有其他形式。

标签: php mysql sql regex datetime


【解决方案1】:

MySQL 具有三种适用于日期/时间值的数据类型。这些在documentation 中有很好的解释。

你有三种类型的值:

  • 单独约会。
  • 日期有时间,但没有时区。
  • 带有时间和时区的日期。

但是要问的基本问题:

  • 您只需要日期还是还需要时间?
  • 您需要时区吗?

如果您只需要日期,那么date 就可以了。否则,您需要datetimetimetamp。这取决于您希望如何处理时区。

如果您确实需要使用该值存储时区,那么我建议您认真考虑这是否真的有必要。通常,timestamp 就足够了,因为它以 UTC 存储值,然后可以将其转换为任何原始时间戳。您可以将原始时区存储在备用列中。

如果您真的需要毫不妥协地处理所有三种类型,那么您可能需要使用字符串。在这种情况下,您应该使用格式正确的字符串:

  • YYYY-MM-DD
  • YYYY-MM-DD HH:MI:SS
  • YYYY-MM-DD HH:MI:SS+TZ

前两个在 MySQL 中很容易转换为适当的类型。第三,您可以提取时区并将其添加为偏移量(需要做一些工作)。

但是,我怀疑这种方法是否必要。 datetime 可能就足够了。

【讨论】:

  • 我想存储它们有两个原因:
  • 1- 显示每个帖子的创建日期。
  • 2- 从数据库中获取最新添加的帖子。
  • 时区不重要,我可以从日期中提取出来。
  • @Ashley 。 . .那么您应该使用timestampdatetime。如果值都来自同一时区,例如来自服务器时区,则可以使用 datetime
猜你喜欢
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2019-05-11
  • 2019-03-09
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多