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

#sql #sql-server #sql-server-2008 #date

#sql #sql-сервер #sql-server-2008 #Дата

Вопрос:

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

 1/1/2011
3/1/2011

RETURN
62
  

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

Комментарии:

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

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

Ответ №1:

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') даст вам то, что вам нужно.

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

Комментарии:

1. Он также использует datetime и datetime2 как шарм, как я вижу в своих результатах.

Ответ №2:

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

Ответ №3:

Вы можете попробовать эту ссылку MSDN

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

Ответ №4:

Смотрите DateDiff:

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

Ответ №5:

Другой формат даты

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

Ответ №6:

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

Ответ №7:

У меня это работает —

 SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

Ответ №8:

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

 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

Ответ №9:

 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 amp; Current date*/
  

Комментарии:

1. Не могли бы вы, пожалуйста, пояснить свой ответ? Ответы, основанные только на коде, часто бывает трудно интерпретировать.