SQL SERVER: получить общее количество дней между двумя датами


146

Я пытаюсь получить общее количество дней между двумя днями:

1/1/2011
3/1/2011

RETURN
62

Возможно ли это сделать в SQL Server?


2
Количество дней между 1/1 и 3/1 никогда не вернет 62 в нашем текущем календаре. Возвращается либо 58, либо 59. Даже если вы
включите

7
И если вы не в США, он вернется через 2 дня.
MGOwen

Ответы:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') даст вам то, что вы после.

Это дает количество раз, когда полуночная граница пересекается между двумя датами. Вы можете решить добавить одну к этому, если вы включаете обе даты в счетчик, или вычтите одну, если вы не хотите включать ни одну из этих дат.


Он также обрабатывает datetime и datetime2 как талисман, как я вижу в своих результатах.
Хонза П.

39

SQL Server DateDiff

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);





0

Это работает для меня -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

-1

если вы хотите сделать ту же самую процедуру хранения, вам нужно применить приведенный ниже код.

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

где @fromdate и @todate - параметр 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
Можете ли вы объяснить свой ответ? Ответы только на код часто могут быть трудно интерпретировать.
Джордан Каспер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.