做的乙個專案,要計算每一日的資料統計,以日雨量為例,
每個記錄的記錄時間包括了時分秒。
計算規則: 日期為8:00到8:00才為一天的資料,
假設要計算2012-03-25的雨量,則資料的日期範圍應該是 2012-03-25 08:00:00 到 2012-03-26 8:00:00之間的資料
相到的查詢方法是 通過查詢日期範圍在開始日期和結束日期之間的資料,將日期與開始日期的8:00:00鐘開始算它們之間的小時差,根據小時差,進行分組,算日雨量之和
測試資料
createtable testtb
(id int
primary
key)
goinsert
into testtb select
'2012-03-22 08:00:00
',10
union
allselect
'2012-03-22 09:00:00
',10
union
allselect
'2012-03-22 10:02:00
',10
union
allselect
'2012-03-22 10:30:00
',10
union
allselect
'2012-03-22 11:20:00
',10
union
allselect
'2012-03-22 11:30:00
',10
union
allselect
'2012-03-22 11:40:00
',10
union
allselect
'2012-03-22 11:50:00
',10
union
allselect
'2012-03-22 15:00:00
',10
union
allselect
'2012-03-22 16:00:00
',10
union
allselect
'2012-03-22 17:00:00
',10
union
allselect
'2012-03-22 18:00:00
',10
union
allselect
'2012-03-22 19:00:00
',10
union
allselect
'2012-03-22 20:00:00
',10
union
allselect
'2012-03-22 21:00:00
',10
union
allselect
'2012-03-22 22:00:00
',10
union
allselect
'2012-03-22 23:00:00
',10
union
allselect
'2012-03-23 00:20:00
',10
union
allselect
'2012-03-23 07:20:00
',10
union
allselect
'2012-03-23 08:00:00
',50
union
allselect
'2012-03-24 09:00:00
',100
union
allselect
'2012-03-21 09:20:20
',80
union
allselect
'2012-03-23 09:20:20
',80
union
allselect
'2012-03-23 10:20:20
',80
union
allselect
'2012-03-26 10:20:20
',80
union
allselect
'2012-03-26 07:20:20
',80
查詢語句(計算2012-03-22到2012-03-26之間的日雨量)
declare@startdate
datetime
declare
@enddate
datetime
declare
@hours
intset
@startdate='
2012-03-22 08:00:00
'set
@enddate='
2012-03-27 08:00:00
'select
@hours
=datediff(hh,@startdate,@enddate)
select
sum(rainnumber) as 總數, convert(varchar(10),(case
when
7then
dateadd(day,-
(case
when
0and
23then
1when
24and
47then
2when
48and
71then
3when
72and
95then
4when
96and
119then
5when
120and
143then
6else00
and@hours) as t group
by oneday
碰到的第一問題是:
想到的處理方法是 看這個日期的小時是否為小於等於7,如果是,則日期的天數應該減1,則這個資料日期應該歸到3月25日去
第二個問題是:
查詢的日期範圍是不固定的,所以要動態去生成這個sql語句,(通過後台**去構建)
第三個問題:
如果時間跨度很大,則這個sql語句的長度長到嚇死人(比如,跨了幾年)
測試,跨3年可以,
跨5年則 sql語句就過長了 --問題未解決(糾結)
計算兩個日期之間的工作日數
計算兩個日期之間的工作日數,星期6,星期天,不算工作日 dt1和dt2之間相隔多少工作日,其中dt3 dt4的時間為公休日,這裡公休日可以用以個陣列,或者從乙個xml表裡面讀取,以便扣除 要計算的起始時間 要計算的結束時間 公休起始時間 公休結束時間 intreturn private int di...
常用日期計算SQL語句
本月的第一天 select dateadd mm,datediff mm,0,getdate 0 本月的最後一天 select dateadd ms,3 dateadd mm,datediff m,0,getdate 1,0 上個月的第一天 select dateadd m,1 dateadd mm...
SQL各種日期計算方法
select dateadd mm,datediff mm,0,getdate 0 計算乙個月第一天 select dateadd wk,datediff wk,0,getdate 0 本週的星期一 select dateadd yy,datediff yy,0,getdate 0 本年的第一天 s...