如何在SQL Server中基于from_date和to_date获取唯一日期

时间:2018-10-10 14:03:31

标签: sql sql-server sql-server-2014

from_date       to_date      duration 
-------------------------------------
2018-10-01      2018-10-10      9
2018-10-05      2018-10-07      3

如果我提供输入@from_date = 2018-10-01, to_date = 2018-10-11,我想显示为9

2 个答案:

答案 0 :(得分:1)

那呢:

SELECT DATEDIFF(DAY,'20181001','20181011')-1

答案 1 :(得分:0)

--To select a single value per row
SELECT 
  DATEDIFF(DAY,from_date,to_date) as duration
FROM 
  SomeTable

您可以应用WHERE子句来仅过滤要返回持续时间的特定行,或者将DATEDIFF函数包装在AVG()或SUM()中以获取表中所有时间的平均值或总计。您可以使用T-SQL做各种非常复杂的事情。例如,以下查询将为您提供2017年开始日期(起始日期)的每个月的平均持续时间。

E.G。 -

SELECT  
  DATEPART(Month, from_date) as Month, 
  AVG(DATEDIFF(DAY, from_date, to_date) as AvgDuration
FROM SomeTable
WHERE 
  DATEPART(Year, from_date) = 2017
GROUP BY
    DATEPART(Month, from_date)

希望这会有所帮助。如果没有,请再试一次。 :)