【问题标题】:Convert MySQL datetime to timestamp将 MySQL 日期时间转换为时间戳
【发布时间】:2023-03-24 16:41:02
【问题描述】:

我正在尝试将日期时间转换为时间戳,但 mysql 给了我警告,而且转换后的值也是错误的。这是 SQL 查询

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(STR_TO_DATE(A.date_added, '%M %d %Y %h:%i%p')) WHERE A.id=B.id;

警告

+---------+------+--------------------------------------------------------------------------+
| Level   | Code | Message                                                                  |
+---------+------+--------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '2011-06-11 20:29:02' for function str_to_date |
+---------+------+--------------------------------------------------------------------------+

结果

+---------------------+---------------------+
| date_added          | date_added          |
+---------------------+---------------------+
| 2012-02-23 06:12:45 | 2012-12-23 19:08:33 |
+---------------------+---------------------+

我也尝试了以下查询,但它在时间戳字段中显示 0000-00-00 00:00:00。

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;

【问题讨论】:

    标签: mysql datetime timestamp


    【解决方案1】:

    UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;

    UNIX_TIMESTAMP('2015-01-15 12:00:00'); 足以将 mysql 日期时间转换为时间戳。

    【讨论】:

      【解决方案2】:

      请试试这个:

      UPDATE table1 A, table2 B 
      SET B.date_added = FROM_UNIXTIME(A.date_added) 
      WHERE A.id=B.id
      

      Reference。 您似乎对格式化日期戳的方式有疑问。 也请看这篇帖子:Should I use field 'datetime' or 'timestamp'?

      【讨论】:

      • 我也试过了,但是为什么会有时差表 A 2012-02-23 06:12:45 表 B 2012-12-23 21:01:57
      • 时区和 FROM_UNIXTIME 有一些奇怪的东西,请参阅 stackoverflow.com/a/17128732/20774 以获得解释
      【解决方案3】:

      在 MySQL 5.5 上可以正常工作:

      UPDATE `some_table`
      SET `timestamp_col` = `datetime_col`
      

      type DATETIME 中的datetime_coltype TIMESTAMP 中的timestamp_col

      即:不需要显式类型转换。

      【讨论】:

        【解决方案4】:

        您使用'%M %d %Y %h:%i%p' 作为日期格式,但警告显示日期字符串“2011-06-11 20:29:02”,该格式与该格式不匹配。即年份在前,时间为 24 小时制。

        您可以改用'%Y-%M-%d %T',该格式将匹配数据。

        在此处查看有关日期格式代码的更多信息: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

        【讨论】:

          猜你喜欢
          • 2013-09-27
          • 2011-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-25
          • 2022-01-08
          相关资源
          最近更新 更多