在Mysql和Javascript中获取相同日期的不同时间戳



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 |

有三个区别:

  1. Date.UTC()在UTC中解释其参数,而UNIX_TIMESTAMP()在数据库会话的时区中解释其参数。从更新到您的问题,似乎这可能没有任何影响,因为数据库会话的本地时区可能在UTC。

  2. Date.UTC()返回自UNIX纪元以来以毫秒为单位的值,而UNIX_TIMESTAMP()返回自UNIX纪元以来以秒为单位的值:因此它们总是相差1000倍。

  3. Date.UTC()的month参数为零索引,因此03的值表示四月,而UNIX_TIMESTAMP()的日期字面值表示三月。

参考文献如下。

JavaScript

Date.UTC()所述(强调添加):

UTC函数与Date构造函数在两个方面不同:它以数字形式返回时间值,而不是创建Date对象;它以UTC方式解释参数,而不是以本地时间

同样,根据TimeClip()(强调添加)的文档:

操作符TimeClip从其参数中计算毫秒数,该参数必须是ECMAScript number值。

同时,如月号下记录的:

以0 ~ 11(含)的整数表示月份。

[deletia]

month值为0表示一月份;1表示二月;2表示三月;3表示四月;4表示五月;5表示六月;6表示七月;7表示8月;8表示九月;9表示10月;10表示11月;和11指定十二月。

MySQL

UNIX_TIMESTAMP(date)所述(强调添加):

如果带date参数调用UNIX_TIMESTAMP(),它返回的参数值为seconds从'1970-01-01 00:00:00' UTC开始。服务器将 date 解释为当前时区中的值,并将其转换为UTC的内部值。客户端可以按照章节10.6," MySQL服务器时区支持"来设置他们的时区。

相关内容

  • 没有找到相关文章

最新更新