Как получить уникальные даты на основе from_date и to_date в SQL Server - PullRequest
0 голосов
/ 10 октября 2018
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 голосов
/ 10 октября 2018
--To select a single value per row
SELECT 
  DATEDIFF(DAY,from_date,to_date) as duration
FROM 
  SomeTable

Вы можете применить предложение WHERE для фильтрации только к определенной строке, для которой вы хотите получить длительность, или обернуть функцию DATEDIFF в AVG () или SUM (), чтобы получить средние или суммарные значения всех длительностей.в таблице.С помощью T-SQL вы можете делать самые разные вещи.Например, приведенный ниже запрос даст вам среднюю продолжительность для каждого месяца, когда все началось (from_date) для 2017 года.

EG -

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)

Надеюсь, это поможет.Если нет, не стесняйтесь попробовать еще раз.:)

0 голосов
/ 10 октября 2018

Как насчет этого:

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