【问题标题】:PHP swap month and day in timestampPHP在时间戳中交换月份和日期
【发布时间】:2023-03-17 23:59:01
【问题描述】:

没错。我将大量数据插入 MySQL 数据库并使用以下内容生成时间戳:

$stamp = mktime($t[0], $t[1], $t[2], $d[2], $d[1], $d[0]);

不幸的是,日期和月份是混在一起的,下面是正确的时间戳。

$stamp = mktime($t[0], $t[1], $t[2], $d[1], $d[2], $d[0]);

大约有 5,000 条记录。进行批量更新和更正的最简单方法是什么?

非常感谢!

【问题讨论】:

    标签: php timestamp mktime


    【解决方案1】:

    数据库引擎是否允许您插入不可能的日期,或者您没有任何日期字段 > 12 的日期?

    在任何情况下,您都可以使用一条更新语句来修复它,但语法取决于您使用的数据库引擎。

    对于 MySQL,您将使用:

    UPDATE myTable SET dateColumn = STR_TO_DATE(DATE_FORMAT(dateColumn, '%d-%c-%Y %T'), '%c-%d-%Y %T')
    

    【讨论】:

    • 是的,我肯定会这样处理。
    • 这适用于我目前持有的 unix 时间戳格式的日期/时间戳吗?
    【解决方案2】:

    你不能。作为解释,我举个例子:

    假设您的意思是: 1990 年第 2 个月第 13 天 但这被读作: 1990 年第 13 个月第 2 天 由于一年中的月份最多只有 12 个,因此这将被视为: 1991 年第 1 个月第 2 天

    但假设您的意思是: 1991 年第 2 个月第 1 天 这将被读作: 1991 年第 1 个月第 2 天

    那么,如果您在数据库中看到 1991 年第 1 个月的第 2 天,那么它来自哪个?

    这就像说,我对一个整数进行平方,结果是 36。我从哪个开始,-6 还是 6?

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 2015-11-22
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2018-01-24
      • 2015-05-23
      相关资源
      最近更新 更多