求sql存储过程 要求当录入当天日期判断出然后显示出日期属于该月第几周并显示该周 周开始日期、周结束日期如录入:2011-03-28显示结果为 周数 开始日期 结束日期第5周 2011-03-27 2011-04-02麻烦高手写个存储过程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL Server 日期算法一周的第一天select @@DATEFIRST一个月的第一天 select dateadd(mm,datediff(mm,0,getdate()),0)本周的星期一 select dateadd(wk,datediff(wk,0,getdate()),0)一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 季度的第一天 SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) 当天的零时SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 上个月的最后一天 :本月第一天减2ms.SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 本月的最后一天 SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) 本月的第一个星期一 去掉时分秒 DATEADD(day, DATEDIFF(day,0,getdate()), 0) 显示星期几 select datename(weekday,getdate()) 如何取得某个月的天数 SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))) 判断是否闰年: SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then '平年' else '闰年' end 一个季度多少天 declare @m tinyint,@time smalldatetime select @m=month(getdate()) select @m=case when @m between 1 and 3 then 1 when @m between 4 and 6 then 4 when @m between 7 and 9 then 7 else 10 end select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01' select datediff(day,@time,dateadd(mm,3,@time)) declare @date datetimeset @date = '2011-03-28'select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+1) + N'周', 开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),0), 121), 结束日期 = convert(char(10), dateadd(day, 6, dateadd(wk,datediff(wk,0,@date),0)), 121)/*周数 开始日期 结束日期第5周 2011-03-28 2011-04-03*/ 参考:http://www.cnblogs.com/insus/articles/1622988.html 感谢,非常感谢。你这个好用。但存在点小问题,如果录入‘2011-03-29’是3月第5周--正确,录入4月2日显示4月第一周-不太好,如果能显示3月第5周就好了。具体日期函数没搞明白,在研究研究,不过我要的这种效果出来了,可以用了declare @date datetimeset @date = '2011-04-2' select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+1) + N'周', 开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),0), 121), 结束日期 = convert(char(10), dateadd(day, 6, dateadd(wk,datediff(wk,0,@date),0)), 121)union select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+2) + N'周', 开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),7), 121), 结束日期 = convert(char(10), dateadd(day, 13, dateadd(wk,datediff(wk,0,@date),0)), 121) 创建全球国家概况信息(BBC)表,关于查询问题(请教) 数据库开发工程师是干什么的啊?有前景吗? 晕了, 简单的SQL题 一个简单的问题请各位高手指教 请教存储过程中的错误描述信息怎么得到 用什么样的SQL能实现这种功能,我想了好几天都解决不了,请高手帮忙,在线等待。。。。 删除日志出错? 求助:MSSQL 2000 占用资源大的解决办法?? 运行时查询问题 想请教各位,初学SQL应该装哪个版本? MS SQL SEVER的发布与订阅是只传输差异数据吗 (一個查詢的問題,不知道怎麼寫,有點難度)的逆操作
select @@DATEFIRST一个月的第一天
select dateadd(mm,datediff(mm,0,getdate()),0)本周的星期一
select dateadd(wk,datediff(wk,0,getdate()),0)一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) 当天的零时
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 上个月的最后一天 :本月第一天减2ms.
SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 本月的最后一天
SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) 本月的第一个星期一 去掉时分秒
DATEADD(day, DATEDIFF(day,0,getdate()), 0)
显示星期几
select datename(weekday,getdate())
如何取得某个月的天数
SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))) 判断是否闰年:
SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))))
when 28 then '平年' else '闰年' end
一个季度多少天
declare @m tinyint,@time smalldatetime
select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
select datediff(day,@time,dateadd(mm,3,@time))
set @date = '2011-03-28'
select
周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+1) + N'周',
开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),0), 121),
结束日期 = convert(char(10), dateadd(day, 6, dateadd(wk,datediff(wk,0,@date),0)), 121)
/*
周数 开始日期 结束日期
第5周 2011-03-28 2011-04-03
*/
http://www.cnblogs.com/insus/articles/1622988.html
感谢,非常感谢。你这个好用。但存在点小问题,如果录入‘2011-03-29’是3月第5周--正确,录入4月2日显示4月第一周-不太好,如果能显示3月第5周就好了。
具体日期函数没搞明白,在研究研究,不过我要的这种效果出来了,可以用了
declare @date datetime
set @date = '2011-04-2' select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+1) + N'周',
开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),0), 121),
结束日期 = convert(char(10), dateadd(day, 6, dateadd(wk,datediff(wk,0,@date),0)), 121)
union
select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+2) + N'周',
开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),7), 121),
结束日期 = convert(char(10), dateadd(day, 13, dateadd(wk,datediff(wk,0,@date),0)), 121)