datediff MySQL在一个特定的日期和一个列之间



我在dd-mm-yyyy中有日期列,如下所示:

| xdate |
----------
| 30-07-2001 |
| 21-09-2003 |
| 16-06-2020 |

如何计算一个特定日期之间的日期差异,例如从' 20121-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

对于月份和年份,您可以尝试:

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

更多关于DATEDIFF的信息:

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html function_datediff

你可以使用TIMESTAMPDIFF如果你想要MONTH, YEAR…https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html function_timestampdiff

最新更新