SQL Server: รับวันทั้งหมดระหว่างสองวัน


146

ฉันพยายามรับจำนวนวันทั้งหมดระหว่างสองวัน:

1/1/2011
3/1/2011

RETURN
62

เป็นไปได้ที่จะทำใน SQL Server?


2
จำนวนวันระหว่าง 1/1 ถึง 3/1 จะไม่ส่งคืน 62 ในปฏิทินปัจจุบันของเรา มันอาจจะส่งคืน 58 หรือ 59 แม้ว่าคุณจะรวมวันเริ่มต้นและวันที่สิ้นสุดนั่นก็คือ 60 หรือ 61
TylerH

7
และถ้าคุณไม่ได้อยู่ในสหรัฐอเมริกามันจะกลับมา 2 วัน
MGOwen

คำตอบ:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') จะให้สิ่งที่คุณต้องการ

สิ่งนี้ให้จำนวนครั้งที่ข้ามเที่ยงคืนระหว่างวันที่สองวัน คุณอาจต้องการเพิ่มหนึ่งรายการนี้หากคุณรวมทั้งวันที่ในการนับ - หรือลบหากคุณไม่ต้องการรวมทั้งวันที่


นอกจากนี้ยังได้รับ datetime และ datetime2 เหมือนมีเสน่ห์อย่างที่ฉันเห็นในผลลัพธ์ของฉัน
Honza P.







-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
คุณช่วยอธิบายคำตอบของคุณได้ไหม คำตอบที่ใช้รหัสเท่านั้นอาจตีความได้ยาก
Jordan Kasper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.