Subtrahieren Sie einen Tag von datetime

102

Ich habe eine Abfrage zum Abrufen des Datumsunterschieds zwischen 2 Datum und Uhrzeit als:

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

Ex :

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

Ich brauche eine Abfrage wie diese, die einen Tag vom erstellten Tag abzieht:

SELECT DATEDIFF(DAY, **@CreatedDate- 1** , GETDATE())
James
quelle
1
Warum nicht einfach 1 zum Ergebnis hinzufügen?
Damien_The_Unbeliever
Wenn das Subtrahieren von 1 vom Ergebnis die gewünschte Antwort ergibt, scheint die von Ihnen gestellte Frage falsch zu sein, da das Subtrahieren vom Ergebnis dem Hinzufügen einer Anzahl von Tagen zum früheren Datum entspricht.
Damien_The_Unbeliever
Dann ist der Ausdruck, den Sie als Ihre erste Antwort an mich gepostet haben, der, den ich verwenden würde - Sie könnten ihn als Antwort posten, aber wie ich sage, bedeutet dies, dass Ihre Frage nicht wirklich richtig ist ( DATEDIFFzwischen 2003-03-12und heute ist 14) nicht 12).
Damien_The_Unbeliever
Ja ... Sie haben Recht ... es funktioniert wie das Gegenteil mit den Ergebnissen ...
James

Antworten:

124

Versuche dies

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

ODER

SELECT DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())
Yogi
quelle
3
Nach der Antwort von Philip Rego können Sie mit SELECT GETDATE () - 1 Tage von einem Datum abziehen.
José Barbosa
44

Ich bin nicht sicher, was genau Sie versuchen, aber ich denke, diese SQL-Funktion wird Ihnen helfen:

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

Das obige wird Ihnen geben 2013-03-31 16:25:00.250.

Es bringt Sie genau einen Tag zurück und funktioniert mit jedem Standard-Datums- und Datumsformat.

Führen Sie diesen Befehl aus und prüfen Sie, ob er Ihnen das bietet, wonach Sie suchen:

SELECT DATEADD(day,-1,@CreatedDate)
Chris
quelle
33

So subtrahieren Sie einfach einen Tag vom heutigen Datum:

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

(ursprünglicher Beitrag verwendet -7 und war falsch)

FoxDeploy
quelle
24

Anscheinend können Sie die Anzahl der gewünschten Tage von einer Datumszeit abziehen.

SELECT GETDATE() - 1

2016-12-25 15:24:50.403
Philip Rego
quelle
6

Das sollte funktionieren.

select DATEADD(day, -1, convert(date, GETDATE()))
Samithagun
quelle
1
SELECT DATEDIFF (
    DAY, 
    DATEDIFF(DAY, @CreatedDate, -1), 
    GETDATE())
Daniel Imms
quelle
1

Versuchen Sie dies, möge dies Ihnen helfen

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

Um ehrlich zu sein, benutze ich einfach:

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

das gibt YYYYMMDDund minus eins davon.

Oder richtiger

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

für das gestrige Datum.

Ersetzen Sie Getdate()durch Ihren WertOrderDate

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

Sollte es tun.

meekon5
quelle
-1

Sie können dies versuchen.

Zeitstempel = 2008-11-11 13: 23: 44.657;

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

Ausgabe: 2008-11-10 13: 23: 44.657

Ich hoffe, es wird helfen, Ihr Problem zu lösen.

Chintan
quelle
2
SQL Server. Unterstützt nicht INTERVALoder DATE_SUB.
Damien_The_Unbeliever
SELECT DATEADD (Tag, 45, OrderDate) FROM Orders. Du hast es?
Chintan