用Procedure取得全月的日期
来源:互联网 发布:中国公知奇葩言论 编辑:程序博客网 时间:2024/06/05 15:51
方法1:
CREATE Procedure xl_ShinchokuWeek@tyosaDT varchar(7)AsDECLARE @tblMonthTyosa TABLE([tyosaDT][varchar](14),[cntTyosaJishi][int] ,[cntTyosain][int],[cntTensaku1][int],[cntTensaku2][int],[cntCount][int],--データの順番 [cntWeek][int],--週目[cntGokei][int]--合計フラグ 0:普通の時間、1:週間合計、2:月間合計) DECLARE@datefirstdatetime DECLARE@datelastdatetimeDECLARE@dateCntdatetimeDECLARE@countintDECLARE@weekintDECLARE@groupint--計算用 Set @count = 1Set @week = 1Set @group = 1/*開始時間*/Set @datefirst = cast(@tyosaDT + '/01' as datetime) while datepart(dw,@datefirst) <> 2Begin Set @datefirst = datediff(day,1,@datefirst)End/*結束時間*/Set @datelast = cast(datediff(d,1,dateadd(m,1,cast(@tyosaDT + '/01' as datetime))) as datetime) while datepart(dw,@datelast) <> 1Begin Set @datelast = dateadd(day,1,@datelast)End/*時間*/Set @dateCnt = @datefirstWHILE @dateCnt <= @datelastBegin --普通のデータInsert into @tblMonthTyosa(tyosaDT, cntTyosaJishi, cntTyosain, cntTensaku1, cntTensaku2, cntCount, cntWeek, cntGokei)VALUES(substring(CONVERT(char(10),@dateCnt,111),1,10) + CASE datepart(dw,@dateCnt) WHEN 1 THEN '(日)' WHEN 2 THEN '(月)' WHEN 3 THEN '(火)' WHEN 4 THEN '(水)' WHEN 5 THEN '(木)' WHEN 6 THEN '(金)' WHEN 7 THEN '(土)' END, 0, 0, 0, 0, @count, @week, 0)Set @count = @count + 1Set @group = @group + 1IF @group =8Begin--週間合計Insert into @tblMonthTyosa(tyosaDT, cntTyosaJishi, cntTyosain, cntTensaku1, cntTensaku2, cntCount, cntWeek, cntGokei)VALUES('週間合計', 0, 0, 0, 0, @count, @week, 1)Set @count = @count + 1Set @group = 1Set @week = @week + 1EndSet @dateCnt = dateadd(d,1,@dateCnt)EndWHILE @dateCnt > @datelast and @count<>0Begin --月間合計Insert into @tblMonthTyosa(tyosaDT, cntTyosaJishi, cntTyosain, cntTensaku1, cntTensaku2, cntCount, cntWeek, cntGokei)VALUES('月間合計', 0, 0, 0, 0, @count, 0, 2)Set @count = 0EndSELECT *FROM @tblMonthTyosa ORDER BY cntCountreturnGO
方法2:
drop proc xl_tempgoCREATE Proc xl_Temp@tyosaDT varchar(7),@countint output ,@temp varchar output,@datetime datetime outputAsbeginDECLARE @tblMonthTyosa TABLE([tyosaDT][varchar](14),[cntTyosaJishi][int] ,[cntTyosain][int],[cntTensaku1][int],[cntTensaku2][int]) DECLARE@datefirstdatetime DECLARE@datelastdatetimeDECLARE@dateCntdatetime/*DECLARE@countint */ Set @count = 0/*開始時間*/Set @datefirst = cast(@tyosaDT + '/01' as datetime) while datepart(dw,@datefirst) <> 2Begin Set @datefirst = cast(datediff(day,1,@datefirst) as datetime)End/*結束時間*/Set @datelast = cast(datediff(d,1,dateadd(m,1,cast(@tyosaDT + '/01' as datetime))) as datetime) while datepart(dw,@datelast) <> 1Begin Set @datelast = cast(dateadd(day,1,@datelast) as datetime)End/*時間*/Set @dateCnt = @datefirstSet @datetime = @datelastWHILE @dateCnt <= @datelastBegin Insert into @tblMonthTyosa(tyosaDT)VALUES(substring(CONVERT(char(10),@dateCnt,111),1,10) + CASE datepart(dw,@dateCnt) WHEN 1 THEN '(日)' WHEN 2 THEN '(月)' WHEN 3 THEN '(火)' WHEN 4 THEN '(水)' WHEN 5 THEN '(木)' WHEN 6 THEN '(金)' WHEN 7 THEN '(土)' END)Set @count = @count +1Set @dateCnt = dateadd(d,1,@dateCnt)EndSELECT *FROM @tblMonthTyosa ORDER BY tyosaDTendgodeclare @cnttemp intdeclare @temp varchardeclare @datetime datetimeexec xl_Temp '2008/09',@cnttemp output,@temp output,@datetime outputprint @cnttempprint @tempprint @datetime
0 0
- 用Procedure取得全月的日期
- Ruby取得指定月日期数的方法
- 取得日期的星期
- 同表复制修改日期的procedure
- Shell中如何取得Procedure的返回值
- 取得当前月的天数
- java取得当天的日期
- 如何取得昨天的日期
- 取得当前日期的比较
- java 取得前几天的日期
- 悬而未决:取得二个相同目录下不同修改日期的所有文件及全不覆盖复制
- 取得当前月份前或后几个月/取得当前日期前或后几天
- ADO.NET 如何取得 Stored Procedure 的回傳值 (如何获得Stored Procedure 的Last inset id?)
- 日期之间相差的天数,月份差,日期月份加一个月 ,取得当月第一天 和最后一天日期,两个不同月之间的总天数,当月总天数
- 取得当前时间的年或者月:
- 取得日期为当天的数据
- Sql各类日期时间的取得
- FreeBSD下取得昨天日期的方法
- SoapUI 笔记13 JDBC请求
- 空间换时间-替换空格
- gcc编译出现:致命错误,没有输入文件
- 165. Compare Version Numbers
- 绕圈跑_纪中2930_树状数组统计
- 用Procedure取得全月的日期
- 最短前缀(字典树)
- ConnectivityManager 确定和监控网络连接状态
- OC和 C语言中的const
- Mongodb 性能测试
- Singleton VS 'static class'
- Snapshot Volume 操作 - 每天5分钟玩转 OpenStack(58)
- 神圣罗马帝国皇帝
- 用正则表达式编写验证函数