TO_DAYS(date) 函数用来返回指定日期自 0 年以来的天数。
注意:TO_DAYS() 不适用于公历 (1582) 出现之前的值,因为它没有考虑日历更改时丢失的天数。对于 1582 年之前的日期(在其他语言环境中可能是更晚的年份),此函数的结果不可靠。
date 指定的日期
(1)返回 0000-01-02 日期自 0 年以来的天数,如下:
mysql> select TO_DAYS('0000-01-02'); +-----------------------+ | TO_DAYS('0000-01-02') | +-----------------------+ | 2 | +-----------------------+ 1 row in set
(2)返回今日自 0 年以来的天数,如下:
mysql> select TO_DAYS(NOW()); +----------------+ | TO_DAYS(NOW()) | +----------------+ | 738745 | +----------------+ 1 row in set
(3)计算两个日期的天数,如下:
mysql> select TO_DAYS('2022-08-13') - TO_DAYS('2022-08-01'); +-----------------------------------------------+ | TO_DAYS('2022-08-13') - TO_DAYS('2022-08-01') | +-----------------------------------------------+ | 12 | +-----------------------------------------------+ 1 row in set
(4)在 MySQL 中,零日期被定义为 '0000-00-00',即使这个日期本身被认为是无效的。这意味着,对于“0000-00-00” 和 “0000-01-01”,TO_DAYS() 返回值如下:
mysql> SELECT TO_DAYS('0000-00-00'); +-----------------------+ | TO_DAYS('0000-00-00') | +-----------------------+ | NULL | +-----------------------+ 1 row in set mysql> SHOW WARNINGS; +---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '0000-00-00' | +---------+------+----------------------------------------+ 1 row in set mysql> SELECT TO_DAYS('0000-01-01'); +-----------------------+ | TO_DAYS('0000-01-01') | +-----------------------+ | 1 | +-----------------------+ 1 row in set