J'essaie d'ajouter des jours à la date actuelle et à son bon fonctionnement, mais lorsque j'ajoute 360 jours à la date actuelle, cela me donne une valeur erronée.
par exemple: Date actuelle est le 11/04/2014 Et j'ajoute 360 jours à cela, il devrait me donner le 11/04/2015 mais il affiche la même date le 11/04/2014. l'année ne change pas.
voici mon code
select dateadd(dd,360,getdate())
Juste faire-
Select (Getdate()+360) As MyDate
Il n'est pas nécessaire d'utiliser la fonction dateadd pour ajouter ou soustraire des jours à une date donnée. Pour ajouter des années, des mois, des heures, vous avez besoin de la fonction dateadd.
select dateadd(dd,360,getdate())
vous donnera la date correcte comme indiqué ci-dessous:
2017-09-30 15: 40: 37.260
J'ai juste lancé la requête et vérifié:
Dateadd(datepart,number,date)
Vous devriez l'utiliser comme ça: -
select DATEADD(day,360,getdate())
Ensuite, vous trouverez la même date mais une année différente.
À partir de SQL Server 2017 documentation officielle :
SELECT DATEADD(day, 360, GETDATE());
Si vous souhaitez supprimer la partie heure de la fonction GETDATE
, vous pouvez effectuer les opérations suivantes:
SELECT DATEADD(day, 360, CAST(GETDATE() AS DATE));
Deux ou trois façons (selon ce que vous voulez), dites que nous sommes à la date du jour est (En code tsql) -
DECLARE @myCurrentDate datetime = '11Apr2014 10:02:25 AM'
(BTW - vouliez-vous dire 11 avril 2014 ou 04 novembre 2014 dans votre message d'origine? Difficile à dire, car datetime est fondé sur la culture. En Israël le 11/04/2015 signifie 11 avril 2014. Je sais qu'aux États-Unis le 11/04/2014, cela signifie 04 novembre 2014. Je suppose)
SELECT @myCurrentDate + 360
- par défaut, les calculs datetime suivis de + (un entier), ajoutez simplement cela en jours. Donc, vous obtiendrez 2015-04-06 10:02:25.000
- pas exactement ce que vous vouliez, mais plutôt un chiffre de baseball pour une date proche l'année prochaine.
SELECT DateADD(DAY, 365, @myCurrentDate)
ou DateADD(dd, 365, @myCurrentDate)
vous indiquera '2015-04-11 10: 02: 25.000'. Ces deux sont des sucres syntatiques (exactement les mêmes). C'est ce que tu voulais, je devrais penser. Mais c'est toujours faux, car si la date était une année "3 sur 4" (disons DECLARE @myCurrentDate datetime = '11Apr2011 10:02:25 AM'
), vous obtiendriez "2012-04-10 10: 02: 25.000". parce que 2012 avait 366 jours, tu te souviens? (29Feb2012 consomme un "extra" jour. Presque tous les quatre ans a 29Feb).
Donc, je pense que vous vouliez dire
SELECT DateADD(year, 1, @myCurrentDate)
ce qui donne 2015-04-11 10:02:25.000
.
ou mieux encore
SELECT DateADD(year, 1, DateADD(day, DateDiff(day, 0, @myCurrentDate), 0))
ce qui vous donne 2015-04-11 00:00:00.000
(car datetime a aussi le temps, non?). Subtil, ah?
SELECT DateAdd(5,day(getdate())
c'est pour ajouter 5 jours aux jours actuels . Par exemple: date du jour est le 23/08/2018 il est devenu 28/08/2018 en utilisant la requête ci-dessus
peut essayer cela
select (CONVERT(VARCHAR(10),GETDATE()+360,110)) as Date_Result