2014-01-09 316 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