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())

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())

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)

33

So subtrahieren Sie einfach einen Tag vom heutigen Datum:

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

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


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

6

Das sollte funktionieren.

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


1

Versuchen Sie dies, möge dies Ihnen helfen

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

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.


-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.


2
SQL Server. Unterstützt nicht INTERVALoder DATE_SUB.
Damien_The_Unbeliever

SELECT DATEADD (Tag, 45, OrderDate) FROM Orders. Du hast es?
Chintan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.