sql >> Databáze >  >> RDS >> Sqlserver

Jak získat před měsícem ode dneška v SQL Server 2008?

V SQL Server 2008 je date datový typ, který nemá připojený žádný čas. Časovou část tak můžete poměrně snadno odstranit převedením a následným provedením DateAdd .

SELECT DateAdd(month, -1, Convert(date, GetDate()));

Tím se vrátí date datový typ. Chcete-li vynutit, aby byl datetime opět můžete jednoduše přidat další Convert :

SELECT Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));

Možná nebudete potřebovat explicitní převod na datetime , ačkoli.

Poznámka:„Před jedním měsícem ode dneška“ lze definovat mnoha různými způsoby. Na serveru SQL to funguje tak, že vrátí den z předchozího měsíce, který je nejblíže stejnému číslu dne jako aktuální měsíc. To znamená, že výsledkem tohoto výrazu při spuštění 31. března bude 28. únor. Takže v určitých scénářích nemusíte získat očekávané výsledky, pokud neuvažujete jasně o důsledcích toho, jako když jste provedli jedno- měsíční výpočet vícekrát, přičemž se očekává, že získáte stejný den v jiném měsíci (např. březen -> únor -> leden).

Podívejte se na živou ukázku na SQL Fiddle

Demo ukazuje hodnoty a výsledné datové typy každého výrazu.



  1. Jak zobrazit obrázek mysql blob v ovládání obrazu asp.net?

  2. postgres unaccent funkce vs RoR transliterate

  3. php náhodná data mysql

  4. Výběr náhodných otázek z databáze MySQL; správná odpověď zmatená