datediff MySQL 在一个特定日期和一列之间
datediff MySQL between one particular date and a column
我在 dd-mm-yyyy 中有日期列,如下所示:
| xdate |
----------
| 30-07-2001 |
| 21-09-2003 |
| 16-06-2020 |
如何计算一个特定日期(例如从“2021-11-10”到 xdate 列)之间的日期差并以年、月和日表示?
dd-mm-yyyy
不是有效的 MySQL
日期时间格式。我建议您始终以日期时间类型存储日期。
针对您的情况的一个简单解决方案,可能不是大数据性能的最佳解决方案:
SELECT DATEDIFF('2021-11-10',date_format(str_to_date(xdate,'%d-%m-%Y'),'%Y-%m-%d')) AS days
FROM test_tbl;
演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/127
您可以尝试 MONTHS 和 YEARS:
SELECT TIMESTAMPDIFF(MONTH, date_format(str_to_date(xdate, '%d-%m-%Y'), '%Y-%m-%d'),'2021-11-10' ) AS months
FROM test_tbl;
SELECT TIMESTAMPDIFF(YEAR, date_format(str_to_date(xdate, '%d-%m-%Y'), '%Y-%m-%d'),'2021-11-10' ) AS years
FROM test_tbl;
演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/129
More on DATEDIFF:
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff
You can use TIMESTAMPDIFF if you want MONTH , YEAR...
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_timestampdiff
我在 dd-mm-yyyy 中有日期列,如下所示:
| xdate |
----------
| 30-07-2001 |
| 21-09-2003 |
| 16-06-2020 |
如何计算一个特定日期(例如从“2021-11-10”到 xdate 列)之间的日期差并以年、月和日表示?
dd-mm-yyyy
不是有效的 MySQL
日期时间格式。我建议您始终以日期时间类型存储日期。
针对您的情况的一个简单解决方案,可能不是大数据性能的最佳解决方案:
SELECT DATEDIFF('2021-11-10',date_format(str_to_date(xdate,'%d-%m-%Y'),'%Y-%m-%d')) AS days
FROM test_tbl;
演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/127
您可以尝试 MONTHS 和 YEARS:
SELECT TIMESTAMPDIFF(MONTH, date_format(str_to_date(xdate, '%d-%m-%Y'), '%Y-%m-%d'),'2021-11-10' ) AS months
FROM test_tbl;
SELECT TIMESTAMPDIFF(YEAR, date_format(str_to_date(xdate, '%d-%m-%Y'), '%Y-%m-%d'),'2021-11-10' ) AS years
FROM test_tbl;
演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/129
More on DATEDIFF:
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff
You can use TIMESTAMPDIFF if you want MONTH , YEAR... https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_timestampdiff