mySQL日期时间和时间戳

时间:2014-06-21 17:01:05

标签: php mysql mysqli

我想更新DATETIME< TIMESTAMP

DATETIME就像:" 2014-06-21 17:56:00"

TIMESTAMP就像1454546656(现在是)

我想更新DATETIME过去的所有行

什么是最轻的处理行数的方法?

感谢。

2 个答案:

答案 0 :(得分:2)

在mysql中有2个函数

from_unixtime()将unix时间转换为人类可读日期

unix_timestamp()将人类可读日期转换为时间戳

所以你可以使用其中一个进行比较

这是它的外观

mysql> select from_unixtime(1454546656);
+---------------------------+
| from_unixtime(1454546656) |
+---------------------------+
| 2016-02-04 06:14:16       |
+---------------------------+


mysql> select unix_timestamp('2014-06-21 17:56:00');
+---------------------------------------+
| unix_timestamp('2014-06-21 17:56:00') |
+---------------------------------------+
|                            1403353560 |
+---------------------------------------+

mysql>  select unix_timestamp('2014-06-21 17:56:00') < 1454546656;
+----------------------------------------------------+
| unix_timestamp('2014-06-21 17:56:00') < 1454546656 |
+----------------------------------------------------+
|                                                  1 |
+----------------------------------------------------+

mysql>  select from_unixtime(1454546656) > '2014-06-21 17:56:00';
+---------------------------------------------------+
| from_unixtime(1454546656) > '2014-06-21 17:56:00' |
+---------------------------------------------------+
|                                                 1 |
+---------------------------------------------------+

因此,您可以使用哪一个进行比较。

答案 1 :(得分:1)

由于您使用的是PHP,请尝试使用PHP日期函数:

$ts = date("Y-m-d H:i:s", $timestamp); //Convert Unix Timestamp to MySQL Date/Time Format
UPDATE table WHERE DATETIME < '$ts';

这是我能想到的最轻的方法,因为它不会重新计算每条记录的时间戳,而且,如果将DateTime字段编入索引,它将会非常快。