it-swarm.com.de

So subtrahieren Sie mit SQL Server 30 Tage vom aktuellen Datum

Ich kann 30 Tage vom aktuellen Datum nicht subtrahieren und bin ein Anfänger von SQL Server.

Dies sind die Daten in meiner Spalte

date 
------------------------------
Fri, 14 Nov 2014 23:03:35 GMT
Mon, 03 Nov 2014 15:18:00 GMT
Tue, 11 Nov 2014 01:24:47 GMT
Thu, 06 Nov 2014 19:13:47 GMT
Tue, 04 Nov 2014 12:37:06 GMT
Fri, 1 Nov 2014 00:33:00 GMT
Sat, 5 Nov 2014 01:06:00 GMT
Sun, 16 Nov 2014 06:37:12 GMT

Zum Erstellen der obigen Spalte habe ich varchar(50) verwendet. Mein Problem ist nun, dass ich die Daten der letzten 15 bis 20 Tage aus der Datumsspalte anzeigen möchte. Kann jemand bei diesem Problem helfen? update [wie kann ich die letzten 7 Tage nacheinander anzeigen lassen?

41
Madpop

Sie können es in datetime konvertieren und dann DATEADD(DAY, -30, date) verwenden.

Siehe hier .

edit

Ich vermute, dass viele Leute diese Frage finden, weil sie vom aktuellen Datum subtrahieren möchten (wie der Titel der Frage, aber nicht, was OP beabsichtigte). Der Kommentar von munyul unten beantwortet diese Frage genauer. Da Kommentare als ätherisch eingestuft werden (können jederzeit gelöscht werden), wiederhole ich sie hier:

DATEADD(DAY, -30, GETDATE())
95
HoneyBadger

Versuche dies:

SELECT      GETDATE(), 'Today'
UNION ALL
SELECT      DATEADD(DAY,  10, GETDATE()), '10 Days Later'
UNION ALL
SELECT      DATEADD(DAY, –10, GETDATE()), '10 Days Earlier'
UNION ALL
SELECT      DATEADD(MONTH,  1, GETDATE()), 'Next Month'
UNION ALL
SELECT      DATEADD(MONTH, –1, GETDATE()), 'Previous Month'
UNION ALL
SELECT      DATEADD(YEAR,  1, GETDATE()), 'Next Year'
UNION ALL
SELECT      DATEADD(YEAR, –1, GETDATE()), 'Previous Year'

Ergebnismenge:

———————– —————
2011-05-20 21:11:42.390 Today
2011-05-30 21:11:42.390 10 Days Later
2011-05-10 21:11:42.390 10 Days Earlier
2011-06-20 21:11:42.390 Next Month
2011-04-20 21:11:42.390 Previous Month
2012-05-20 21:11:42.390 Next Year
2010-05-20 21:11:42.390 Previous Year
7
Muhammad Awais

VERSUCHE DIES:

Wandeln Sie Ihren VARCHAR-Wert in DATETIME und addieren Sie -30 zur Subtraktion. In sql-server wurde das Format Fr, 14 Nov 2014 23:03:35 GMT nicht in DATETIME konvertiert. Versuchen Sie es mit einem Teilstring:

SELECT DATEADD(dd, -30, 
       CAST(SUBSTRING ('Fri, 14 Nov 2014 23:03:35 GMT', 6, 21) 
       AS DATETIME))
7
Veera
SELECT DATEADD(day,-30,date) AS before30d 
FROM...

Es wird jedoch dringend empfohlen, das Datum in der Datetime-Spalte und nicht in der Varchar-Spalte zu belassen.

2
i486