【发布时间】:2018-12-10 05:05:41
【问题描述】:
我的要求是计算总月数,然后分别计算两个日期之间的中断月份(即表中的第一个日期和第二个日期是当前日期)。如果中断月份总数 > 15,则将其视为 1 个月的经验,如果少于 15 个月,则不将其视为 1 个月的经验。
假设我在桌子上的日期是 25/11/2018,当前日期是 06/01/2019; 中间的整月是 12 月,所以有 1 个月的经验;坏月份是 11 月和 1 月,所以现在我必须计算日期,即 11 月 6 天和 1 月 6 天,所以 12 天
我提到了多个与从 stackoverflow 计算 MYSQL 中的日期差异相关的问题,但找不到任何可能的选项。 MYSQL TIMESTAMPDIFF、TIMEDIFF、PERIOD_DIFF、DATE_DIFF 中的内置函数没有给出我需要的结果,因为它们的算法与我的计算要求不同。
任何关于如何在 MYSQL 中执行此计算并将其结果作为 SQL 语句的一部分获得的线索将对我有所帮助。到达此值后,在同一 SQL 中,将验证该值是否在给定值范围内。
包括示例表结构和值:
table_name = "user"
id | name | join_date
---------------------
1| Sam | 25-11-2017
2| Moe | 03-04-2017
3| Tim | 04-07-2018
4| Sal | 30-01-2017
5| Joe | 13-08-2018
我想从上面的表格中找出根据上述逻辑以月为单位计算经验的用户。如果这些月份在以下任一范围之间,则提取这些用户以进行进一步处理。
table_name: "allowed_exp_range"
starting_exp_months | end_exp_months
-------------------------------------
0 | 6
9 | 24
例如:根据我的计算,Sam 迄今为止 (10-12-2018) 的经验是 12+1 个月 = 13 个月。由于 13 介于 9 和 24 之间,因此 Sam 的记录是预期输出之一。
【问题讨论】:
-
5/11/2018和20/12/2018是 0 个月和 2 个破月共 47 天吗? -
是的@Nick,如果总天数是 47 天,因为它大于我的 15 天限制,所以差值被认为是 1 个月。
-
如果有人有兴趣对任何问题投反对票,请提供评论并说明投反对票的原因。否则,OP 永远不会知道出了什么问题,从而很有可能重复同样的事情。所以,请表现出同样的兴趣来解释你投反对票的原因。
-
@Malathy 我已根据您对问题所做的更改更新了我的答案。
标签: mysql date date-difference