Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment obtenir il y a un mois à partir d'aujourd'hui dans SQL Server 2008 ?

Dans SQL Server 2008, il y a la date type de données, auquel aucune heure n'est attachée. Vous pouvez ainsi supprimer la partie heure assez facilement simplement en convertissant, puis en effectuant le DateAdd .

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

Cela renverra une date Type de données. Pour le forcer à être datetime encore une fois, vous pouvez simplement ajouter un autre Convert :

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

Vous n'aurez peut-être pas besoin de la conversion explicite en datetime , cependant.

Remarque :"Il y a un mois à partir d'aujourd'hui" peut être défini de différentes manières. La façon dont cela fonctionne dans SQL Server est de renvoyer le jour du mois précédent qui est le plus proche du même numéro de jour que le mois en cours. Cela signifie que le résultat de cette expression lors de son exécution le 31 mars sera le 28 février. Ainsi, vous n'obtiendrez peut-être pas les résultats attendus dans certains scénarios si vous ne réfléchissez pas clairement aux ramifications de cela, par exemple si vous avez effectué la première. calcul du mois plusieurs fois, en s'attendant à obtenir le même jour dans un mois différent (par exemple, mars -> février -> janvier).

Voir une démo en direct sur SQL Fiddle

La démo montre les valeurs et les types de données résultants de chaque expression.