sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan får jeg en måned siden fra i dag i SQL Server 2008?

I SQL Server 2008 er der date datatype, som ikke har nogen tid tilknyttet. Du kan således ganske nemt fjerne tidsdelen ved blot at konvertere og derefter udføre DateAdd .

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

Dette vil returnere en date datatype. For at tvinge det til at være datetime igen, du kan blot tilføje en mere Convert :

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

Du har muligvis ikke brug for den eksplicitte konvertering til datetime dog.

Bemærk:"En måned siden fra i dag" kan defineres på mange forskellige måder. Måden det fungerer i SQL server er at returnere den dag fra den foregående måned, der er tættest på samme dagnummer som den aktuelle måned. Det betyder, at resultatet af dette udtryk, når det køres den 31. marts, vil være den 28. februar. Så du får muligvis ikke forventede resultater i visse scenarier, hvis du ikke tænker klart over konsekvenserne af dette, såsom hvis du udførte en- månedsberegning flere gange, forventer at få den samme dag i en anden måned (såsom at gøre marts -> februar -> januar).

Se en live demo på SQL Fiddle

Demoen viser værdierne og resulterende datatyper for hvert udtryk.



  1. Hvordan kan jeg caste en int til en bit i MySQL 5.1?

  2. Antal median grupperet efter dag

  3. SQL-forespørgsel for at hente regnskabsårsdata grupperet efter år

  4. Bruger filsortering til at sortere efter dato og klokkeslæt kolonne i MySQL