Javascript
new Date()
Tue Mar 18 2014 18:54:17 GMT+0000 (GMT)
Date.UTC(2014,03,18)
1397779200000
在Mysql中mysql> SELECT NOW(), UTC_TIMESTAMP();
+---------------------+---------------------+
| NOW() | UTC_TIMESTAMP() |
+---------------------+---------------------+
| 2014-03-18 18:55:04 | 2014-03-18 18:55:04 |
+---------------------+---------------------+
mysql> select UNIX_TIMESTAMP('2014-03-18') ;
+------------------------------+
| UNIX_TIMESTAMP('2014-03-18') |
+------------------------------+
| 1395118800 |
有三个区别:
-
Date.UTC()
在UTC中解释其参数,而UNIX_TIMESTAMP()
在数据库会话的时区中解释其参数。从更新到您的问题,似乎这可能没有任何影响,因为数据库会话的本地时区可能在UTC。 -
Date.UTC()
返回自UNIX纪元以来以毫秒为单位的值,而UNIX_TIMESTAMP()
返回自UNIX纪元以来以秒为单位的值:因此它们总是相差1000倍。 -
Date.UTC()
的month参数为零索引,因此03
的值表示四月,而UNIX_TIMESTAMP()
的日期字面值表示三月。
参考文献如下。
JavaScript如Date.UTC()
所述(强调添加):
UTC
函数与Date
构造函数在两个方面不同:它以数字形式返回时间值,而不是创建Date对象;它以UTC方式解释参数,而不是以本地时间。
同样,根据TimeClip()
(强调添加)的文档:
操作符TimeClip从其参数中计算毫秒数,该参数必须是ECMAScript number值。
同时,如月号下记录的:
MySQL以0 ~ 11(含)的整数表示月份。
[deletia]month值为0表示一月份;1表示二月;2表示三月;3表示四月;4表示五月;5表示六月;6表示七月;7表示8月;8表示九月;9表示10月;10表示11月;和11指定十二月。
如UNIX_TIMESTAMP(date)
所述(强调添加):
如果带date参数调用
UNIX_TIMESTAMP()
,它返回的参数值为seconds从'1970-01-01 00:00:00' UTC开始。服务器将date
解释为当前时区中的值,并将其转换为UTC的内部值。客户端可以按照章节10.6," MySQL服务器时区支持"来设置他们的时区。