在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 |
答案 0 :(得分:2)
有三点不同:
Date.UTC()
以UTC格式解释其参数,而UNIX_TIMESTAMP()
在数据库会话的时区中解释其参数。从更新到您的问题,似乎这可能没有任何影响,因为数据库会话的本地时区可能是UTC。
Date.UTC()
返回自UNIX纪元以来的毫秒数值,而UNIX_TIMESTAMP()
返回自UNIX纪元以来的秒数值:因此它们总是相差1000倍。
Date.UTC()
的月份参数为零索引,因此值03
表示四月,而UNIX_TIMESTAMP()
的日期字面表示三月。
参考文献如下。
正如Date.UTC()
所述(强调补充):
UTC
函数与Date
构造函数的区别在于两种方式:它返回一个time value作为数字,而不是创建一个Date对象,它解释参数以UTC而不是当地时间。
另外,正如TimeClip()
(强调补充)中所述:
运算符TimeClip从其参数计算毫秒数,该参数必须是ECMAScript数值。
另外,正如Month Number所述:
月份由0到11(包括0和11)范围内的整数标识。
[ deletia ]月份值0指定1月; 1指明二月; 2指定March; 3指明四月; 4指定May; 5指定6月; 6指定7月; 7指定八月; 8指定9月; 9指定10月; 10指定11月; 11指定12月。
正如UNIX_TIMESTAMP(date)
所述(强调补充):
如果使用日期参数调用
中的说明设置时区UNIX_TIMESTAMP()
,它会将参数的值返回为秒,因为' 1970-01-01 00:00:00'世界标准时间。服务器将date
解释为当前时区中的值,并将其转换为UTC内部值。客户可以按照Section 10.6, “MySQL Server Time Zone Support”。