繁体   English   中英

MySQL的日期时间和时间戳

[英]mySQL datetime and timestamp

我想更新DATETIME <TIMESTAMP的mysql行

DATETIME就像:“ 2014-06-21 17:56:00”

TIMESTAMP就像1454546656(现在)

我想更新过去DATETIME的所有行

什么是处理大量行的最简单方法?

谢谢。

在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 |
+---------------------------------------------------+

因此,取决于您要使用哪个进行比较。

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

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

这是我能想到的最轻巧的方法,因为它不会为每个记录重新计算时间戳,而且,如果对DateTime字段建立了索引,它的运行速度将非常快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM