MySQL中的UNIX_TIMESTAMP和NOW()之间的区别

san*_*a26 7 mysql date unix-timestamp

我有一个用户可以发表评论的博客.我插入他们发布评论的时间,NOW()然后用它date('j M Y', stored timestamp)来显示他们发布的时间.

我想知道NOW()是否会返回locatime of the end user or the localtime at my server.难道是更适合使用UNIX_TIMESTAMPNOW()来计算此用户发布的评论的本地时间.

use*_*117 6

UNIX_TIMESTAMP()如果没有传递任何参数,MySQL会以"1970-01-01 00:00:00"UTC为单位以秒为单位返回一个Unix时间戳作为无符号整数UNIT_TIMESTAMP().

当此函数与date参数一起使用时,它将参数的值作为无符号整数返回,自"1970-01-01 00:00:00"UTC以来为秒.

参数可以是DATE,DATETIME,TIMESTAMP或YYYYMMDD或YYMMDD中的数字.

注意:由于UNIX_TIMESTAMP()适用于当前日期时间,因此输出可能与显示的输出不同.

NOW() 返回当前日期和时间.

SELECT NOW(), UNIX_TIMESTAMP(NOW());
+---------------------+-----------------------+
| NOW()               | UNIX_TIMESTAMP(NOW()) |
+---------------------+-----------------------+
| 2011-10-03 10:22:37 |            1317666157 |
+---------------------+-----------------------+
Run Code Online (Sandbox Code Playgroud)


Ja͢*_*͢ck 5

该函数NOW()生成一个格式化的日期时间字符串,该字符串由MySQL服务器的时区确定。

但是,最好使用UNIX_TIMESTAMP()GMT中表示的来存储时间。这样做可以更轻松地根据访问者所在的国家/地区(例如,使用JavaScript)设置其格式。

如果您仍想使用DATETIME列,则可以使用来存储时间UTC_TIMESTAMP()(格式类似于日期,NOW()但以UTC表示);它在所有其他方面都应该或多或少都相同。