jak uzyskać 30 dni przed datą od dzisiejszej daty

82

Jak uzyskać 30 dni przed dzisiejszym dniem w SQL.

Innova
źródło
5
Z której bazy danych SQL korzystasz? MS SQL? MySQL? Wyrocznia?
hgulyan
3
edycja: zgodnie z twoim poprzednim pytaniem, jest to oczywiście ms sql.
hgulyan

Odpowiedzi:

131

T-SQL

declare @thirtydaysago datetime
declare @now datetime
set @now = getdate()
set @thirtydaysago = dateadd(day,-30,@now)

select @now, @thirtydaysago

lub prościej

select dateadd(day, -30, getdate())

( DATEADD w BOL / MSDN )

MYSQL

SELECT DATE_ADD(NOW(), INTERVAL -30 DAY)

( więcej przykładów DATE_ADD na ElectricToolbox.com )

Amelvin
źródło
Właśnie sobie uświadomiłem, że jest to napisane w T-Sql (Sql Server), jeśli odpowiedź jest potrzebna dla MySql, to odpowiednikiem jest coś takiego: SELECT DATE_ADD (NOW (), INTERVAL -30 DAY).
amelvin
1
Po prostu dodaj to do swojej odpowiedzi :)
hgulyan
W MySQL działa również DATE_SUB (NOW (), INTERVAL 30 DAY)
radtek
15

W MS SQL Server jest to:

SELECT getdate() - 30;

Merin Nakarmi
źródło
1
Jaka jest różnica Gaffi? Dlaczego uważasz, że edycja była konieczna?
Merin Nakarmi
1
Myślę, że jedyną istotną różnicą między wersją oryginalną a edytowaną jest to, że ta ostatnia używa <code>tagu, który wygląda lepiej. :)
Sk8erPeter
3
SELECT (column name) FROM (table name) WHERE (column name) < DATEADD(Day,-30,GETDATE());

Przykład.

SELECT `name`, `phone`, `product` FROM `tbmMember` WHERE `dateofServicw` < (Day,-30,GETDATE()); 
Ashley2605
źródło
1

Spróbuj dodać to do swojej whereklauzuli:

dateadd(day, -30, getdate())
Chester Porcioncula Velasco
źródło