2014-01-09 313 views
0

我試圖獲得一個查詢,該查詢會將日期範圍內的天數乘以一個靜態數字,我遇到的問題是當選擇某一天時返回0而不是1的結果:例如:計算日期範圍內的天數

Declare @Startdate DATE 
Declare @enddate DATE 
SET @Startdate='9/1/2013' 
SET @enddate='9/1/2013' 
SELECT 1154*(Select DATEDIFF(DAY, @startdate, @enddate)) 

此示例返回0而不是1。我應該使用比則DateDiff其他的東西嗎?

附加說明 - 這將用作報告的一部分,日期範圍將由調用報告的人動態輸入。

+2

它爲什麼要在天回'1'?區別對於那些2個日期是'0 '。如果你想計算天數,那麼只需在其中加1。 'SELECT 1154 *(DATEDIFF(DAY,@startdate,@ enddate)+1)' – Lamak

+0

如果'@startdate ='9/1/2013''和'@ enddate ='9/2/2013'' ?這也應該是1嗎?或者你所有的範圍都是1? – chezy525

+0

我希望它包含那一天,儘管它實際上並不在範圍之間。在該範圍的第一天添加+1帳戶。例如,我想2013年9月1日 - 2013年9月10日爲10,因爲它將包括範圍內的9/1 – imbrian21

回答

2

可以只添加1:

Declare @Startdate DATE 
Declare @enddate DATE 
SET @Startdate='9/1/2013' 
SET @enddate='9/1/2013' 
SELECT (DATEDIFF(day,@Startdate,@enddate)+1)*1154 

更新,如上所述不需要內SELECT

+0

它是「選擇(1154 *(選擇DATEDIFF(天,@startdate,@enddate))) +1「?? –

+2

這是正確的,但沒有必要的內部'SELECT' – Lamak

+0

@ConsultYarla爲什麼?,它現在完成的方式是什麼操作要麼:*乘以一個日期範圍內的天數的靜態數* – Lamak