Tarih saatinden bir gün çıkar


102

2 tarih saat arasındaki tarih farkını şu şekilde getirmek için bir sorgum var:

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

Ex :

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

Oluşturulan günden bir günü çıkaracak şekilde böyle çalışan bir sorguya ihtiyacım var:

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

1
Neden sonuca sadece 1 eklemiyorsunuz?
Damien_The_Unbeliever

Eğer çıkarılarak sonucundan 1 istenilen cevabı veriyor beri, o zaman poz ettik soru yanlış görünüyor çıkarılarak sonucundan eşdeğerdir ekleyerek tarihleri önceki üzerine gün sayısı.
Damien_The_Unbeliever

O zaman bana ilk cevabınız olarak gönderdiğiniz ifade, benim kullanacağım ifadedir - bir cevap olarak gönderebilirsiniz, ancak dediğim gibi, sorunuzun gerçekten doğru olmadığı anlamına gelir ( DATEDIFFaradaki 2003-03-12ve bugün 14 , 12 değil).
Damien_The_Unbeliever

Evet..haklısın.. sonuçlarla tam tersi çalışıyor ..
James

Yanıtlar:


124

Bunu dene

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

VEYA

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

3
Philip Rego'nun cevabını takiben, bir tarihten gün çıkarmak için SELECT GETDATE () - 1'i kullanabilirsiniz.
José Barbosa

44

Tam olarak ne yapmaya çalıştığınızdan emin değilim, ancak bu SQL işlevinin size yardımcı olacağını düşünüyorum:

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

Yukarıdakiler size verecektir 2013-03-31 16:25:00.250.

Sizi tam olarak bir gün geriye götürür ve herhangi bir standart tarih-saat veya tarih biçiminde çalışır.

Bu komutu çalıştırmayı deneyin ve aradığınız şeyi size verip vermediğine bakın:

SELECT DATEADD(day,-1,@CreatedDate)

33

Bugünün tarihinden bir gün çıkarmak için:

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

(orijinal gönderi -7 kullanıldı ve yanlıştı)


24

Görünüşe göre bir tarih saatinden istediğiniz gün sayısını çıkarabilirsiniz.

SELECT GETDATE() - 1

2016-12-25 15:24:50.403

6

Bu çalışmalı.

select DATEADD(day, -1, convert(date, GETDATE()))


1

Bunu dene, bu sana yardımcı olabilir mi?

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

1

Dürüst olmak gerekirse sadece şunu kullanıyorum:

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

hangi verir YYYYMMDDve ondan eksi bir.

Ya da daha doğrusu

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

dün tarihi için.

Getdate()Değerinizle değiştirinOrderDate

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

yapmalı.


-1

Bunu deneyebilirsin.

Zaman damgası = 2008-11-11 13: 23: 44.657;

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

çıktı: 2008-11-10 13: 23: 44.657

Umarım sorununuzu çözmenize yardımcı olur.


2
SQL Server. INTERVALVeya desteklemiyor DATE_SUB.
Damien_The_Unbeliever

Siparişlerden DATEADD (gün, 45, Sipariş Tarihi) SEÇİN. Anladın mı?
chintan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.