之间有2个日期
问题描述:
考虑三个独立的日期字段:之间有2个日期
COMPLETION_DATE:2017年4月27日 DUE_DATE:2016年7月22日 LATEST_DATE:2018年7月20日
使用DATEDIFF(MM,DUE_DATE ,LATEST_DATE),我可以计算结果为24
然后我需要能够搞清楚(月),其中竣工日期落在这个范围之内。结果应该是21
答
我想你算错了结果,或提供的日期时出现了拼写错误。如果completion_date
为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演示:http://rextester.com/DEV75985
回报:
+-----------------+----------+-------------+-----------------------+-------------------------+--------------------------------+
| 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 |
+-----------------+----------+-------------+-----------------------+-------------------------+--------------------------------+
+0
完成编号的剩余月份是正确的。给我提供价值的人给了我不正确的信息。去搞清楚。 –
+0
@LisaRose乐意帮忙! – SqlZim
哎呀,其结果应该是21而不是19 –
那你试试?你得到了什么错误? –
我还没有尝试比第一个公式的任何其他。我无法弄清楚如何进行第二部分。 –