gpt4 book ai didi

mysql - 如何从两个不同的日期获得年份差异?

转载 作者:IT老高 更新时间:2023-10-28 23:41:37 24 4
gpt4 key购买 nike

我想使用 MySQL 数据库获取两个不同日期的年份差异。

例如:

  • 2011-07-20 - 2011-07-18 => 0 年
  • 2011-07-20 - 2010-07-20 => 1 年
  • 2011-06-15 - 2008-04-11 => 2 3 年
  • 2011-06-11 - 2001-10-11 => 9 年

SQL 语法怎么样?是否有任何来自 MySQL 的内置函数来产生结果?

最佳答案

这也是闰年的表达方式:

YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))

这是因为表达式 (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))true如果 date1 比 date2 “更早” and 因为在 mysql 中,true = 1false = 0 ,因此调整只是减去比较的“真相”。

这为您的测试用例提供了正确的值,除了测试 #3 - 我认为它应该是“3”以与测试 #1 保持一致:

create table so7749639 (date1 date, date2 date);
insert into so7749639 values
('2011-07-20', '2011-07-18'),
('2011-07-20', '2010-07-20'),
('2011-06-15', '2008-04-11'),
('2011-06-11', '2001-10-11'),
('2007-07-20', '2004-07-20');
select date1, date2,
YEAR(date1) - YEAR(date2)
- (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) as diff_years
from so7749639;

输出:

+------------+------------+------------+
| date1 | date2 | diff_years |
+------------+------------+------------+
| 2011-07-20 | 2011-07-18 | 0 |
| 2011-07-20 | 2010-07-20 | 1 |
| 2011-06-15 | 2008-04-11 | 3 |
| 2011-06-11 | 2001-10-11 | 9 |
| 2007-07-20 | 2004-07-20 | 3 |
+------------+------------+------------+

SQLFiddle

关于mysql - 如何从两个不同的日期获得年份差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com