Non riesco a sottrarre 30 giorni dalla data corrente e sono un novizio di SQL Server.
Questi sono i dati nella mia colonna
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
Per creare la colonna sopra ho usato varchar(50)
e ora il mio problema è che voglio visualizzare le date degli ultimi 15-20 giorni dalla colonna della data qualcuno può aiutare con questo problema? aggiornamento [come posso visualizzare le date degli ultimi 7 giorni in ordine
È possibile convertirlo in datetime
, quindi utilizzare DATEADD(DAY, -30, date)
.
Vedi qui .
modifica
Ho il sospetto che molte persone stiano trovando questa domanda perché vogliono sottrarre dalla data corrente (come è il titolo della domanda, ma non ciò che l'OP intendeva). Il commento di Munyul di seguito risponde a questa domanda in modo più specifico. Poiché i commenti sono considerati Ethereal (possono essere eliminati in qualsiasi momento), lo ripeterò qui:
DATEADD(DAY, -30, GETDATE())
Prova questo:
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'
Set di risultati:
———————– —————
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
PROVA QUESTO:
Trasmetti il tuo valore VARCHAR su DATETIME e aggiungi -30 per la sottrazione. Inoltre, in sql-server il formato ven, 14 nov 2014 23:03:35 GMT non è stato convertito in DATETIME. Prova la sottostringa per questo:
SELECT DATEADD(dd, -30,
CAST(SUBSTRING ('Fri, 14 Nov 2014 23:03:35 GMT', 6, 21)
AS DATETIME))
SELECT DATEADD(day,-30,date) AS before30d
FROM...
Ma si consiglia vivamente di mantenere la data nella colonna datetime, non varchar.