J'ai cette requête:

  update courseRights
         set courseRightsLevelExpires = DATEADD(MM,3,courseRightsLevelExpires)

Cela fonctionne bien, mais ce dont j'ai réellement besoin, c'est de prolonger jusqu'à trois mois à partir du premier jour du mois prochain. Par exemple, si les droits expirent aujourd'hui, le 23 mai, je dois mettre à jour au 1er juin + 3 mois.

Est-il possible de faire cela en une seule requête?

Mise à jour

Comme il a été signalé comme dupliqué avec une autre question, je mets à jour le contenu pour dire que je ne recherche pas seulement la première date du mois prochain, mais que je dois ajouter trois mois à cette date.

-2
Laziale 23 mai 2018 à 20:07

3 réponses

Meilleure réponse

Vous pouvez utiliser la fonction eomoth():

update courseRights
set courseRightsLevelExpires = 
    dateadd(mm, 3, dateadd(dd, 1, eomonth(courseRightsLevelExpires)));
0
Yogesh Sharma 23 mai 2018 à 17:40

Je ferai:

Set nextmonthdate = last_day (votre-date) + 1 jour

0
Bobok Perona 18 août 2018 à 07:36

Pour obtenir le premier jour du mois suivant:

DATEADD(m, DATEDIFF(m, -1, current_timestamp), 0)

Trois mois plus tard:

DATEADD(m,3,DATEADD(m, DATEDIFF(m, -1, current_timestamp), 0))

Donc, si courseRightsLevelExpires contient la date de base à partir de laquelle vous travaillez:

DATEADD(m,3,DATEADD(m, DATEDIFF(m, -1, courseRightsLevelExpires), 0))
2
devlin carnate 23 mai 2018 à 17:12