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