您的位置:首页 > 数据库

SQL语句,取日期最后一天

2008-06-18 09:07 281 查看
在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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐