【问题标题】:Counting the amount of Days in a date range计算日期范围内的天数
【发布时间】:2014-01-09 20:22:02
【问题描述】:

I'm trying to get a query that will multiply a static number by the amount of days in a date range the problem i'm having is that when a single day is selected it returns a result of 0 instead of 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 以外的东西吗?

附加说明 - 这将用作报告的一部分,其中日期范围将由调用报告的人动态输入。

【问题讨论】:

  • 为什么要返回1?,这两个日期的天数差是0。如果您想计算天数,只需添加1 即可。 SELECT 1154*(DATEDIFF(DAY, @startdate, @enddate)+1)
  • 如果@startdate='9/1/2013'@enddate='9/2/2013' 应该返回什么?这也应该是1吗?还是你所有的范围都相差 1?
  • 我希望它包括一天,即使它实际上不是“介于”范围之间。为范围内的第一天添加 +1 帐户。例如,我希望 9/1/2013 - 9/10/2013 为 10,因为它将在范围内包含 9/1

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:

可以加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

【讨论】:

  • 是"SELECT (1154*(Select DATEDIFF(DAY, @startdate, @enddate)))+1" ??
  • @ConsultYarla 为什么?,现在完成的方式正是 op 想要的:将静态数字乘以日期范围内的天数
  • 这只是为了证明,有时它是简单的事情。这正是我想要的。谢谢!
猜你喜欢
  • 2011-02-05
  • 2019-04-12
  • 1970-01-01
  • 2018-12-15
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多