SERVIDOR SQL: obtenha dias totais entre duas datas


146

Estou tentando obter o número total de dias entre dois dias:

1/1/2011
3/1/2011

RETURN
62

É possível fazer no SQL Server?


2
O número de dias entre 1/1 e 3/1 nunca retornaria 62 em nosso calendário atual. Seria quer voltar 58 ou 59. Mesmo se você incluir o dia dia de início e fim, que seria de 60 ou 61.
TylerH

7
E se você não estiver nos EUA, retornará 2 dias.
MGOwen

Respostas:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') vai lhe dar o que você procura.

Isso fornece o número de vezes que o limite da meia-noite é cruzado entre as duas datas. Você pode optar por adicionar um a isso se estiver incluindo as duas datas na contagem - ou subtrair uma se não desejar incluir nenhuma data.


Ele também prossegue datetime e datetime2 como um encanto, como posso ver nos meus resultados.
Honza P.

39

DateDiff do SQL Server

DECLARE @startdate datetime2 = '2007-05-05 12:10:09.3312722';
DECLARE @enddate datetime2 = '2009-05-04 12:10:09.3312722'; 
SELECT DATEDIFF(day, @startdate, @enddate);

17

Você pode tentar este link do MSDN

DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2011', '3/1/2011')

16

Consulte DateDiff :

DECLARE @startdate date = '2011/1/1'
DECLARE @enddate date = '2011/3/1'
SELECT DATEDIFF(day, @startdate, @enddate)

12

Outro formato de data

select datediff(day,'20110101','20110301')

4
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');

0

Isso está funcionando para mim -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount

-1

se você quiser fazer o mesmo procedimento de armazenamento, precisará aplicar o código abaixo.

select  (datediff(dd,'+CHAR(39)+ convert(varchar(10),@FromDate  ,101)+ 
 CHAR(39)+','+CHAR(39)+ convert(varchar(10),@ToDate  ,101) + CHAR(39) +')) 
 Daysdiff

onde @fromdate e @todate é Parâmetro do SP


-1
DECLARE @FDate DATETIME='05-05-2019' /*This is first date*/
 GETDATE()/*This is Current date*/
SELECT (DATEDIFF(DAY,(@LastDate),GETDATE())) As DifferenceDays/*this query will return no of days between firstdate & Current date*/

2
Você pode, por favor, explicar sua resposta? As respostas somente de código costumam ser difíceis de interpretar.
Jordan Kasper
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.