在SQL语法中,有没有找到某一个月的最后一天的函数呀,如“2002-05-12”,则改成“2002-05-31“”

在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

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus