MySQL中UNIX_TIMESTAMP和NOW()的区别
我有一个用户可以发表评论的博客。我使用MySQL中UNIX_TIMESTAMP和NOW()的区别,mysql,date,unix-timestamp,Mysql,Date,Unix Timestamp,我有一个用户可以发表评论的博客。我使用NOW()插入他们发表评论的时间,然后使用date('jmmy',存储的时间戳)显示他们发表评论的时间 我想知道NOW()是否返回最终用户的位置或我服务器上的localtime。 使用UNIX\u TIMESTAMP比NOW()更适合计算用户发表评论的本地时间。函数NOW()生成一个格式化的日期时间字符串,该字符串由MySQL服务器的时区确定 但是,最好使用UNIX\u TIMESTAMP()(以GMT表示)存储时间。这样做可以更容易地根据访问者的国家/地区
NOW()
插入他们发表评论的时间,然后使用date('jmmy',存储的时间戳)
显示他们发表评论的时间
我想知道NOW()是否返回最终用户的位置或我服务器上的localtime
。
使用UNIX\u TIMESTAMP
比NOW()
更适合计算用户发表评论的本地时间。函数NOW()
生成一个格式化的日期时间字符串,该字符串由MySQL服务器的时区确定
但是,最好使用UNIX\u TIMESTAMP()
(以GMT表示)存储时间。这样做可以更容易地根据访问者的国家/地区设置时间格式(例如,使用JavaScript)
如果仍要使用
DATETIME
列,则可以使用UTC\u TIMESTAMP()
存储时间(它将日期格式化为NOW()
,但以UTC表示);它在所有其他方面都应该或多或少地起到相同的作用。让我们看看手册中有哪些内容:
将当前日期和时间作为“YYYY-MM-DD HH:MM:SS”中的值返回
或YYYYMMDDHHMMSS.uuu格式,具体取决于函数是否为
在字符串或数字上下文中使用该值以
当前时区
。。。以及:
如果在没有参数的情况下调用,将返回Unix时间戳(秒)
“1970-01-01 00:00:00”UTC)作为无符号整数。如果UNIX_时间戳()
使用日期参数调用,则返回参数的值
自UTC“1970-01-01 00:00:00”以来的秒数。日期可以是日期字符串,
日期时间字符串、时间戳或YYMMDD或YYMMDD格式的数字
YYYYMMDD服务器将日期解释为当前时间的值
分区并将其转换为UTC的内部值。
因此,首先,它们返回不同的内容:正确的日期和整数
实际上,您需要获得三个功能:
UNIX\u TIMESTAMP()
如果未使用UNIT\u timestamp()传递参数,则返回自UTC“1970-01-01 00:00:00”以来的Unix时间戳(以秒为单位),该时间戳为无符号整数。
当此函数与日期参数一起使用时,它将以无符号整数的形式返回参数值,以秒为单位,从UTC“1970-01-01 00:00:00”开始计算
参数可以是日期、日期时间、时间戳或YYYYMMDD或YYMMDD中的数字
注意:由于UNIX\u TIMESTAMP()
在当前日期时间工作,因此您的输出可能与显示的输出不同
NOW()
返回当前日期和时间
SELECT NOW(), UNIX_TIMESTAMP(NOW());
+---------------------+-----------------------+
| NOW() | UNIX_TIMESTAMP(NOW()) |
+---------------------+-----------------------+
| 2011-10-03 10:22:37 | 1317666157 |
+---------------------+-----------------------+
现在我该如何使用javascript计算用户所在国家/地区。我知道如何计算gmt,但country@jackthis将如何根据用户的国家打印日期
date('jMy',存储的时间戳)
UNIX\u timestamp()
返回一个整数。您是否建议转储DATETIME
列以支持INT
?@RayZ JavaScript可以通过执行new Date(*1000)
轻松实现这一点,您可以获得偏移量-请参阅