[求助]怎样才能取到每个月的最后一天 如题,我想利用MSSQL来查询出每个月的最后一天的日期,请问有没有什么函数可以实现啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本月的Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,Getdate()),120)+'01') 其余的,可用日期替換掉GetDate() 即可 先用 DATEADD(M 将时间换到下个月,再取下个月的 年-月-01,即得到下个月的第一天.而这个第一天再 DATEADD(d,-1 就得到这个月的最后一天.思路是这样,写法就不写了.取下个月再取年的原因是因为这个月可能是12月. Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,'2006-12-25'),120)+'01')--Result2006-12-31 00:00:00.000 也就是说,用下个月的第一天的日期减去1,就是这个月的最后一天。而下个月的最后一天,可以通过下面的方法得出:先将当前日期加上一个月,再将得出的结果的用Convert(Varchar(8),@date,120)的方法取出年和月,再将这个字符串连接上“01”,得出的字符串就是下个月的第一天的日期。 if object_id('tb') is not null drop table tbcreate table tb(Mth int, Days int)declare @time datetime, @currentTime datetime, @month int--当前月第一天SET @currentTime = convert(varchar(8),getdate(),120) + '01 'SET @month = 1while @month <= 12BEGIN--由当前月第一天求出所有第month月的第一天SET @time = dateadd(month,-month(@currentTime)+@month + 1,@currentTime)insert into tb(Mth, Days) (select @month, day(DateAdd(dd,-1,@time)))SET @month = @month + 1ENDselect * from tbdrop table tb/*Mth Days----------- -----------1 312 283 314 305 316 307 318 319 3010 3111 3012 31(12 行受影响)*/ Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,getdate()),120)+ '01 ') 【弱】关于 declare @sql1 varchar(8000)。。。 SQL server 怎么写存储过程 sql server 服务 启动不了 救命~555 不等长的时间段汇总记录查询如何实现? MS-sql server 与Oracle在锁表时的区别是什么呢? sql server 2012 express localDB 请问如何修改或删除作业? 请问如何获取数据库中所有的用户表名? 怎么判断一个字符号串里包含2个或者两个以上的'@'符号 同一服务器上两个数据库如何实现数据单向同步。 有谁能给我详细的解释一下索引的作用? sql server的truncate触发器问题
而这个第一天再 DATEADD(d,-1 就得到这个月的最后一天.思路是这样,写法就不写了.取下个月再取年的原因是因为这个月可能是12月.
Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,'2006-12-25'),120)+'01')
--Result
2006-12-31 00:00:00.000
drop table tb
create table tb(Mth int, Days int)
declare @time datetime,
@currentTime datetime,
@month int
--当前月第一天
SET @currentTime = convert(varchar(8),getdate(),120) + '01 '
SET @month = 1while @month <= 12
BEGIN
--由当前月第一天求出所有第month月的第一天
SET @time = dateadd(month,-month(@currentTime)+@month + 1,@currentTime)
insert into tb(Mth, Days) (select @month, day(DateAdd(dd,-1,@time)))
SET @month = @month + 1
END
select * from tb
drop table tb
/*
Mth Days
----------- -----------
1 31
2 28
3 31
4 30
5 31
6 30
7 31
8 31
9 30
10 31
11 30
12 31(12 行受影响)
*/
Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,getdate()),120)+ '01 ')