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.