我想更新DATETIME< TIMESTAMP
DATETIME就像:" 2014-06-21 17:56:00"
TIMESTAMP就像1454546656(现在是)
我想更新DATETIME过去的所有行
什么是最轻的处理行数的方法?
感谢。
答案 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字段编入索引,它将会非常快。