您可以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
結果:
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
基本上,在DATEADD/DATEDIFF,你指定相同的組件(即月)。然後,第二個日期常數(即'20100130')指定你希望從第一個日期(即'20100101')應用的「偏移量」,它將「覆蓋」你不保留的日期部分。我通常的例子是希望從日期時間值刪除時間部分時:
SELECT DATEADD(day,DATEDIFF(day,'20010101',<date column>),'20100101')
那麼,你到目前爲止提出了什麼?或者你期望我們爲你做所有事情? – Oded 2010-11-02 09:55:01