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。如果 dateNULL,则返回 NULL

如果没有给出参数或参数不包含小数秒部分,则返回值为整数;如果给出参数包含小数秒部分,则返回值为 DECIMAL

函数语法

  1. > UNIX_TIMESTAMP([date])

参数释义

参数说明
date可选参数。date 参数是合法的日期表达式。
date 参数可以是 DATEDATETIMETIMESTAMP 字符串,也可以是 YYMMDDYYMMDDhhmmssYYYYMMDDYYYYMMDDhhmmss 格式的数字。如果 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 时区不同的值:

  1. mysql> SET time_zone = 'MET';
  2. Query OK, 0 rows affected (0.01 sec)
  3. mysql> SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
  4. +-------------------------------------+
  5. | unix_timestamp(2005-03-27 03:00:00) |
  6. +-------------------------------------+
  7. | 1111885200 |
  8. +-------------------------------------+
  9. 1 row in set (0.00 sec)
  10. mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
  11. +-------------------------------------+
  12. | unix_timestamp(2005-03-27 02:00:00) |
  13. +-------------------------------------+
  14. | 1111885200 |
  15. +-------------------------------------+
  16. 1 row in set (0.00 sec)
  17. mysql> SELECT FROM_UNIXTIME(1111885200);
  18. +---------------------------+
  19. | from_unixtime(1111885200) |
  20. +---------------------------+
  21. | 2005-03-27 03:00:00 |
  22. +---------------------------+
  23. 1 row in set (0.00 sec)

示例

  1. mysql> SELECT UNIX_TIMESTAMP("2016-07-11");
  2. +----------------------------+
  3. | unix_timestamp(2016-07-11) |
  4. +----------------------------+
  5. | 1468188000 |
  6. +----------------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19');
  9. +-------------------------------------+
  10. | unix_timestamp(2015-11-13 10:20:19) |
  11. +-------------------------------------+
  12. | 1447406419 |
  13. +-------------------------------------+
  14. 1 row in set (0.00 sec)
  15. mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');
  16. +-----------------------------------------+
  17. | unix_timestamp(2015-11-13 10:20:19.012) |
  18. +-----------------------------------------+
  19. | 1447406419.012000 |
  20. +-----------------------------------------+
  21. 1 row in set (0.00 sec)

限制

目前 date 格式只支持 yyyy-mm-ddyyyymmdd 的数据格式。