Sql server 介于两个日期之间

Sql server 介于两个日期之间,sql-server,Sql Server,给定三个单独的日期字段: 竣工日期:2017年4月27日 到期日:2016年7月22日 最新发布日期:2018年7月20日 使用DATEDIFF(MM,到期日,最新日期),我可以计算结果为24 然后我需要能够计算出(在几个月内)完成日期在哪个范围内。结果应该是21。我认为你计算错误了结果,或者在提供日期时输入了错误。如果完成日期是2018-04-27而不是您的问题中的2017-04-27,那么结果将是21 create table t (completion_date date, due_dat

给定三个单独的日期字段:

竣工日期:2017年4月27日 到期日:2016年7月22日 最新发布日期:2018年7月20日

使用DATEDIFF(MM,到期日,最新日期),我可以计算结果为24


然后我需要能够计算出(在几个月内)完成日期在哪个范围内。结果应该是21。

我认为你计算错误了结果,或者在提供日期时输入了错误。如果
完成日期
2018-04-27
而不是您的问题中的
2017-04-27
,那么结果将是
21

create table t (completion_date date, due_date date, latest_date date);
insert into t values ('20180427','20160722','20180720');

select 
    completion_date = convert(char(7),completion_date)
  , due_date = convert(char(7),due_date)
  , latest_date = convert(char(7),latest_date)
  , months_for_completion = datediff(month,due_date,latest_date)
  , months_until_completion = datediff(month,due_date,completion_date)
  , months_remaining_at_completion = datediff(month,completion_date,latest_date)
from t
rextester演示:

返回:

+-----------------+----------+-------------+-----------------------+-------------------------+--------------------------------+
| completion_date | due_date | latest_date | months_for_completion | months_until_completion | months_remaining_at_completion |
+-----------------+----------+-------------+-----------------------+-------------------------+--------------------------------+
| 2018-04         | 2016-07  | 2018-07     |                    24 |                      21 |                              3 |
+-----------------+----------+-------------+-----------------------+-------------------------+--------------------------------+

哎呀,结果应该是21而不是19。你试了什么?你犯了什么错误?除了第一个公式,我什么都没试过。我不知道如何进行第二部分。你用什么方法从这些日期中计算出21个?完成数字的剩余月份是正确的。给我提供价值观的人给了我不正确的信息。去吧,我很乐意帮忙!