gpt4 book ai didi

mysql - 两个完整日期之间的月份距离 - 仅限

转载 作者:行者123 更新时间:2023-11-29 01:32:11 27 4
gpt4 key购买 nike

好吧,我需要得到两个值来表示两个完整日期之间的距离(没有小时/时间)......在 MySQL 上我们有 PERIOD_DIFF 来获取两个日期之间的差异(只有月份和年份),但我也需要包括日期。

我有两个日期:

  • 2011-12-052012-01-10。在 2012-01-05 之后我有 1 个完整的月份,还有 5 天。
  • 2012-01-012012-03-01。我有 2 个月零一天。
  • 2012-02-292012-03-28¹。我有 0 个月零 28 天。 更多:1个月,我需要2012-03-29
  • 2013-01-292013-02-28²。我有 0 个月零 30 天。 更多:1个月,我需要2013-03-01,因为2013-02-29不存在。
  • 2013-03-312013-04-30修复:真的我有 0 个月零 30 天。 更多:1个月,我需要2013-05-01,因为2013-04-31不存在。

¹ 2012 是闰年/bissexto;
² 2013 不是;

我不知道我需要做什么才能解决这个问题。

最佳答案

尝试这样的事情:

SET @start = '2013-03-31';
SET @end = '2013-04-30';
-- date @start is last day of month ?
SET @start_last = @start = LAST_DAY(@start);
-- date @end is last day of month ?
SET @end_last = @end = LAST_DAY(@end);

-- checking if difference is more than month
SET @month_or_more =IF(@start_last AND @end_last OR DAY(@start) = DAY(@end), DATE_ADD(@start, INTERVAL 1 MONTH) <= @end, DATE_ADD(@start, INTERVAL 1 MONTH) < @end);
-- diff in months
SET @m_num = IF(@month_or_more, PERIOD_DIFF( DATE_FORMAT(@end, '%Y%m'), DATE_FORMAT(@start, '%Y%m')), 0);
-- diff in days
SET @d_num = DATEDIFF(DATE_ADD(@start, INTERVAL @m_num MONTH), @end);

SELECT ABS(@m_num) as month, ABS(@d_num) as days;

//编辑固定版本

关于mysql - 两个完整日期之间的月份距离 - 仅限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595092/

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