SQL SERVER: Nhận tổng số ngày giữa hai ngày


146

Tôi đang cố gắng để có được tổng số ngày giữa hai ngày:

1/1/2011
3/1/2011

RETURN
62

Có thể làm trong SQL Server không?


2
Số ngày từ 1/1 đến 3/1 sẽ không bao giờ quay lại 62 trong lịch hiện tại của chúng tôi. Nó sẽ trả về 58 hoặc 59. Ngay cả khi bạn bao gồm ngày bắt đầu và ngày kết thúc, đó sẽ là 60 hoặc 61.
TylerH

7
Và nếu bạn không ở Mỹ, nó sẽ trở lại sau 2 ngày.
MGOwen

Câu trả lời:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') sẽ cung cấp cho bạn những gì bạn đang theo đuổi.

Điều này đưa ra số lần ranh giới nửa đêm được giao giữa hai ngày. Bạn có thể quyết định cần thêm một vào điều này nếu bạn bao gồm cả hai ngày trong số đếm - hoặc trừ đi một ngày nếu bạn không muốn bao gồm một trong hai ngày.


Nó cũng tiến hành datetime và datetime2 như một sự quyến rũ như tôi có thể thấy trong kết quả của mình.
Honza P.

39

Máy chủ SQL 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);


16

Xem DateDiff :

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

12

Định dạng ngày khác

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

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

0

Điều này đang làm việc cho tôi -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

-1

Nếu bạn muốn làm điều tương tự Thủ tục lưu trữ thì bạn cần áp dụng mã bên dưới.

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

trong đó @fromdate và @todate là Thông số của 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
Bạn có thể vui lòng giải thích câu trả lời của bạn? Câu trả lời chỉ có mã thường có thể khó diễn giải.
Jordan Kasper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.