2017-05-04 232 views
0

考慮三個獨立的日期字段:之間有2個日期

COMPLETION_DATE:2017年4月27日 DUE_DATE:2016年7月22日 LATEST_DATE:2018年7月20日

使用DATEDIFF(MM,DUE_DATE ,LATEST_DATE),我可以計算結果爲24

然後我需要能夠搞清楚(月),其中竣工日期落在這個範圍之內。結果應該是21

+0

哎呀,其結果應該是21而不是19 –

+0

那你試試?你得到了什麼錯誤? –

+0

我還沒有嘗試比第一個公式的任何其他。我無法弄清楚如何進行第二部分。 –

回答

0

我想你算錯了結果,或提供的日期時出現了拼寫錯誤。如果completion_date2018-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