UNIX_TIMESTAMP()
函数说明
UNIX_TIMESTAMP()
返回自 1970-01-01 00:00:00 UTC 至当前时间的秒数。
UNIX_TIMESTAMP(date)
将参数的值返回为 1970-01-01 00:00:00 UTC 至 date 指定时间的秒数。
如果日期超出范围传递给 UNIX_TIMESTAMP()
,它将返回 0。如果 date
为 NULL
,则返回 NULL
。
如果没有给出参数或参数不包含小数秒部分,则返回值为整数;如果给出参数包含小数秒部分,则返回值为 DECIMAL
。
函数语法
> UNIX_TIMESTAMP([date])
参数释义
参数 | 说明 |
---|---|
date | 可选参数。date 参数是合法的日期表达式。 date 参数可以是 DATE 、DATETIME 或 TIMESTAMP 字符串,也可以是 YYMMDD、YYMMDDhhmmss、YYYYMMDD 或 YYYYMMDDhhmmss 格式的数字。如果 date 参数包含时间部分,则它有选择地包含秒的小数部分。当 date 参数是 TIMESTAMP 时,UNIX_TIMESTAMP() 直接返回内部时间戳值,而不进行隐含的 string-to-Unix-timestamp 转换。 |
非 UTC 时区的值和 Unix 时间戳值之间的转换
如果使用 UNIX_TIMESTAMP()
和 FROM_UNIXTIME()
在非 UTC(Coordinated Universal Time,协调世界时)时区的值和 Unix 时间戳值之间进行转换,则转换是有损的,因为映射在两个方向上不是一对一的。例如,由于诸如夏令时 (DST) 等本地时区更改的约定,UNIX_TIMESTAMP()
可以将在非 UTC 时区中不同的两个值映射到相同的 Unix 时间戳值。FROM_UNIXTIME()
将该值仅映射回原始值之一。下面的示例,即,使用在 MET
时区不同的值:
mysql> SET time_zone = 'MET';
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
+-------------------------------------+
| unix_timestamp(2005-03-27 03:00:00) |
+-------------------------------------+
| 1111885200 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+-------------------------------------+
| unix_timestamp(2005-03-27 02:00:00) |
+-------------------------------------+
| 1111885200 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT FROM_UNIXTIME(1111885200);
+---------------------------+
| from_unixtime(1111885200) |
+---------------------------+
| 2005-03-27 03:00:00 |
+---------------------------+
1 row in set (0.00 sec)
示例
mysql> SELECT UNIX_TIMESTAMP("2016-07-11");
+----------------------------+
| unix_timestamp(2016-07-11) |
+----------------------------+
| 1468188000 |
+----------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19');
+-------------------------------------+
| unix_timestamp(2015-11-13 10:20:19) |
+-------------------------------------+
| 1447406419 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');
+-----------------------------------------+
| unix_timestamp(2015-11-13 10:20:19.012) |
+-----------------------------------------+
| 1447406419.012000 |
+-----------------------------------------+
1 row in set (0.00 sec)
限制
目前 date 格式只支持 yyyy-mm-dd
和 yyyymmdd
的数据格式。