ลบหนึ่งวันจากวันที่และเวลา


102

ฉันมีคำถามในการดึงข้อมูลวันที่แตกต่างระหว่าง 2 วันและเวลาเป็น:

SELECT DATEDIFF(DAY, @CreatedDate , GETDATE())

Ex :

SELECT DATEDIFF(DAY, '2013-03-13 00:00:00.000' , GETDATE())

ฉันต้องการให้แบบสอบถามทำงานเช่นนี้ซึ่งจะลบวันจากวันที่สร้าง:

SELECT DATEDIFF(DAY, **@CreatedDate- 1** , GETDATE())

1
ทำไมไม่เพิ่ม 1 ในผลลัพธ์ล่ะ
Damien_The_Unbeliever

หากการลบ 1 ออกจากผลลัพธ์เป็นการให้คำตอบที่ต้องการคำถามที่คุณตั้งไว้ดูเหมือนจะผิดเนื่องจากการลบออกจากผลลัพธ์จะเท่ากับการเพิ่มจำนวนวันในวันที่ก่อนหน้านั้น
Damien_The_Unbeliever

จากนั้นนิพจน์ที่คุณโพสต์เป็นข้อความตอบกลับครั้งแรกของคุณคือสิ่งที่ฉันใช้ - คุณสามารถโพสต์เป็นคำตอบได้ แต่ที่ฉันพูดหมายความว่าคำถามของคุณไม่ถูกต้องจริงๆ ( DATEDIFFระหว่าง2003-03-12ถึงวันนี้คือ 14 ไม่ใช่ 12)
Damien_The_Unbeliever

ใช่.. คุณพูดถูก.. มันทำงานตรงกันข้ามกับผลลัพธ์ ..
เจมส์

คำตอบ:


124

ลองทำตามนี้

SELECT DATEDIFF(DAY,  DATEADD(day, -1, '2013-03-13 00:00:00.000'), GETDATE())

หรือ

SELECT DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())

3
ตามคำตอบจาก Philip Rego คุณสามารถใช้ SELECT GETDATE () - 1 เพื่อลบวันจากวันที่
José Barbosa

44

ฉันไม่แน่ใจว่าคุณกำลังพยายามทำอะไรอยู่ แต่ฉันคิดว่าฟังก์ชัน SQL นี้จะช่วยคุณได้:

SELECT DATEADD(day,-1,'2013-04-01 16:25:00.250')

2013-03-31 16:25:00.250ดังกล่าวข้างต้นจะทำให้คุณ

ใช้เวลาย้อนกลับไปหนึ่งวันและทำงานกับวันที่เวลามาตรฐานหรือรูปแบบวันที่ใดก็ได้

ลองเรียกใช้คำสั่งนี้และดูว่าให้สิ่งที่คุณกำลังมองหาหรือไม่:

SELECT DATEADD(day,-1,@CreatedDate)

33

ในการลบหนึ่งวันจากวันนี้:

Select DATEADD(day,-1,GETDATE())

(โพสต์เดิมใช้ -7 และไม่ถูกต้อง)


24

เห็นได้ชัดว่าคุณสามารถลบจำนวนวันที่คุณต้องการออกจากวันที่และเวลา

SELECT GETDATE() - 1

2016-12-25 15:24:50.403




1

พูดตามตรงฉันแค่ใช้:

select convert(nvarchar(max), GETDATE(), 112)

ซึ่งให้YYYYMMDDและลบหนึ่งจากมัน

หรือมากกว่าอย่างถูกต้อง

select convert(nvarchar(max), GETDATE(), 112) - 1 

สำหรับวันที่เมื่อวานนี้

แทนที่Getdate()ด้วยคุณค่าของคุณOrderDate

select convert(nvarchar (max),OrderDate,112)-1 AS SubtractDate FROM Orders

ควรทำ


-1

คุณสามารถลองสิ่งนี้

ประทับเวลา = 2008-11-11 13: 23: 44.657;

SELECT DATE_SUB(OrderDate,INTERVAL 1 DAY) AS SubtractDate FROM Orders

เอาต์พุต: 2008-11-10 13: 23: 44.657

ฉันหวังว่ามันจะช่วยแก้ปัญหาของคุณได้


2
เซิร์ฟเวอร์ SQL ไม่รองรับINTERVALหรือDATE_SUB.
Damien_The_Unbeliever

เลือก DATEADD (วันที่ 45 วันที่สั่งซื้อ) จากคำสั่งซื้อ คุณเข้าใจไหม
chintan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.