在SQL语句中,当where条件中有一日期变量时,我想把年月日中的日改成当月的最后一天,如30,或31,怎么做啊
select * from table1 where work_date > :aDate ;
如
aDate = “2002-05-12”
则,我需要的是把aDate 修改成“2002-05-31”,
---------------------------------------------------------------
declare @dt datetime
declare @lastdt datetime
select @dt='2002-5-12'
select @lastdt=dateadd(day,-datepart(day,@dt),dateadd(month,1,@dt))
select @lastdt
result:
以下是针对上面的修改:
感谢ghxghx的指正,发现以前回答问题时的一个错误,现在更正。
问题:取一个日期所在的月份的天数
错误的回答:
Declare @dt datetime
Set @dt='2002/04/24'
select DATEDIFF(dd,@dt,dateadd(mm,1,@dt))
正确的(N_Chow 的答案):
Declare @dt datetime
Set @dt='2002/04/24'
SELECT 32-Day(@dt+(32-Day(@dt))) as 該月份的天數
原因:
如果
Declare @dt datetime
Set @dt='2002/01/31'
select DATEDIFF(dd,@dt,dateadd(mm,1,@dt))
的结果是2002/01/28
同样的问题:
找到某一个月的最后一天的函数
错误的回答:
declare @dt datetime
declare @lastdt datetime
select @dt='2002-5-12'
select @lastdt=dateadd(day,-datepart(day,@dt),dateadd(month,1,@dt))
select @lastdt
正确的:
Declare @dt datetime
Set @dt='2002/04/24'
SELECT cast(str(Year(@dt))+'/'+str(Month(@dt))+'/'+str(32-Day(@dt+(32-Day(@dt)))) as datetime)
修改详情请见:http://www.csdn.net/expert/topicview1.asp?id=819302