Vous pouvez jouer quelques trucs amusants avec DATEADD
/DATEDIFF
:
create table T (
ID int not null,
DT date not null
)
insert into T (ID,DT)
select 1,'20100115' union all
select 2,'20100214' union all
select 3,'20100314' union all
select 4,'20100415'
SELECT ID,DATEADD(month,DATEDIFF(month,'20100101',DT),'20100115')
from T
SELECT ID,DATEADD(month,DATEDIFF(month,'20100101',DT),'20100130')
from T
Résultats:
ID
----------- -----------------------
1 2010-01-15 00:00:00.000
2 2010-02-15 00:00:00.000
3 2010-03-15 00:00:00.000
4 2010-04-15 00:00:00.000
ID
----------- -----------------------
1 2010-01-30 00:00:00.000
2 2010-02-28 00:00:00.000
3 2010-03-30 00:00:00.000
4 2010-04-30 00:00:00.000
Fondamentalement, dans le DATEADD/DATEDIFF, vous spécifiez le même composant à bo th (c.-à-d. mois). Ensuite, la deuxième constante de date (à savoir «20100130») spécifie le «décalage» que vous souhaitez appliquer à partir de la première date (par exemple «20100101»), qui «écrasera» la partie de la date que vous ne conservez pas. Mon exemple habituel est lorsque l'on souhaite retirer la partie de temps d'une valeur datetime:
SELECT DATEADD(day,DATEDIFF(day,'20010101',<date column>),'20100101')
Alors, qu'avez-vous trouvé jusqu'à présent? Ou voulez-vous que nous fassions tout pour vous? – Oded