在写一个存储过程的时候碰到这个问题:存储过程参数传入的年份和月份是INT类型: @YEAR INT,
@MONTH DATETIME在存储过程中我要得到这个月份的第一天和最后一天,然后根据这个时间段去查询数据,这个要怎么写呢?
@MONTH DATETIME在存储过程中我要得到这个月份的第一天和最后一天,然后根据这个时间段去查询数据,这个要怎么写呢?
调试欢乐多
dateadd(mm,1,cast(ltrim(@YEAR) + '-' + ltrim(@MONTH) + '-01' as datetime)) - 1
SELECT Dateadd(dd,-1,CONVERT(datetime,CONVERT(char(4),Case when Month(@checkdate) = 12 Then year(@checkdate)+1 Else year(@checkdate) End)+'-'+CONVERT(varchar(2),Case when Month(@checkdate) = 12 Then 1 Else month(@checkdate)+1 End)+'-01',101))
得到当前日期所在月的最后一天。可以参考下
declare @MONTH int
set @year = 2010
set @MONTH = 10select ltrim(@YEAR) + '-' + ltrim(@MONTH) + '-01' 第一天,
dateadd(mm,1,cast(ltrim(@YEAR) + '-' + ltrim(@MONTH) + '-01' as datetime)) - 1 最后一天/*
第一天 最后一天
---------------------------- ------------------------------------------------------
2010-10-01 2010-10-31 00:00:00.000(所影响的行数为 1 行)
*/set @year = 2010
set @MONTH = 12
select ltrim(@YEAR) + '-' + ltrim(@MONTH) + '-01' 第一天,
dateadd(mm,1,cast(ltrim(@YEAR) + '-' + ltrim(@MONTH) + '-01' as datetime)) - 1 最后一天
/*
第一天 最后一天
---------------------------- ------------------------------------------------------
2010-12-01 2010-12-31 00:00:00.000(所影响的行数为 1 行)
*/