case 日期when 范围_多个日期段如何分组 case when convert等用法
--23表示2006-05-16這種時間格式,按月
--select max(test.fee)-min(test.fee),CONVERT(varchar(20),
test.t_stamp, 23) from table_test test
--where test.m_id=17 and ?test.t_stamp
< '2013-02-25 00:00:00' and test.t_stamp
> '2013-01-01 00:00:00'
--group by CONVERT(varchar(20), test.t_stamp, 23)
--20表示2006-05-16 10:57:47這種時間格式,按天,每一個小時一個點
--varchar(13)截取日期中的2006-05-16 10到小時
--select max(test.fee)-min(test.fee),CONVERT(varchar(13),
test.t_stamp, 20) from table_test test
--where test.m_id=17 and ?test.t_stamp
< '2013-02-10 00:00:00' and test.t_stamp
> '2013-02-03 00:00:00'
--group by CONVERT(varchar(13), test.t_stamp,
20)
--23表示2006-05-16這種時間格式,按年,每個月一個點
--varchar(7)截取日期中的2006-05到月
--select max(test.fee)-min(test.fee),CONVERT(varchar(7),
test.t_stamp, 23) from table_test test
--where test.m_id=17 and ?test.t_stamp
< '2013-12-30 00:00:00' and test.t_stamp
> '2013-01-01 00:00:00'
--group by CONVERT(varchar(7), test.t_stamp, 23)
--23表示2006-05-16這種時間格式,按周
--select test.m_id,max(test.fee)-min(test.fee)
cmp,CONVERT(varchar(20), test.t_stamp, 23) stamp from table_test
test
--where test.m_id in(17,18) and ?test.t_stamp
< '2013-02-10 00:00:00' and test.t_stamp
> '2013-02-03 00:00:00'
--group by test.m_id,CONVERT(varchar(20), test.t_stamp,
23)
--23表示2006-05-16這種時間格式,按周,總電表實例
--select sum(cmp),stamp from(
-- select test.m_id,max(test.fee)-min(test.fee) as
cmp,CONVERT(varchar(20), test.t_stamp, 23)as stamp from table_test
test
-- where test.m_id in(17,18) and
test.t_stamp < '2013-02-10
00:00:00' and test.t_stamp > '2013-02-03
00:00:00'
-- group by test.m_id,CONVERT(varchar(20), test.t_stamp,
23)
--) as b group by stamp --select from
[表名],后面要跟一個表名而不是表,嵌套之后必需要用指定一個別名,否則就會出錯
--按周的12點分開兩個點
--case when 時間分組用法
--select m_id,sum(val) cmp,stamp =
--case
-- when stamp >= CONVERT(varchar(10), stamp,
23) + ' 00' and stamp <= CONVERT(varchar(10), stamp,
23) + ' 11'
-- then CONVERT(varchar(10), stamp, 23)+' 11:59:59'
-- when stamp >= CONVERT(varchar(10), stamp,
23) + ' 12' and stamp <= CONVERT(varchar(10), stamp,
23) + ' 23'
-- then CONVERT(varchar(10), stamp, 23)+' 23:59:59'
--else CONVERT(varchar(20), getdate(),
20)
--end
--from(
-- select test.m_id,(max(test.fee)-min(test.fee))
val,CONVERT(varchar(13), test.t_stamp, 20) stamp
-- from table_test test
-- where test.m_id in(17,18) and
test.t_stamp < '2013-02-10
00:00:00' and test.t_stamp > '2013-02-03
00:00:00'
-- group by test.m_id,CONVERT(varchar(13), test.t_stamp,
20)
--
--) as sumTable
--group by m_id,
--case
-- when stamp >= CONVERT(varchar(10), stamp,
23) + ' 00' and stamp <= CONVERT(varchar(10), stamp,
23) + ' 11'
-- then CONVERT(varchar(10), stamp, 23)+' 11:59:59'
-- when stamp >= CONVERT(varchar(10), stamp,
23) + ' 12' and stamp <= CONVERT(varchar(10), stamp,
23) + ' 23'
-- then CONVERT(varchar(10), stamp, 23)+' 23:59:59'
--else CONVERT(varchar(20), getdate(),
20)
--end
--order by stamp asc
--一年的每15天一個點
select m_id,sum(val) cmp,stamp =
case
when stamp >= CONVERT(varchar(7), stamp, 23) +
'-01' and stamp <= CONVERT(varchar(7), stamp, 23) +
'-15'
then CONVERT(varchar(7), stamp, 23) + '-15'
when stamp >= CONVERT(varchar(7), stamp, 23) +
'-15' and stamp <= CONVERT(varchar(7), stamp, 23) +
'-31'
then CONVERT(varchar(7), stamp, 23) + '-' +
convert(varchar(2),day(dateadd(day,-1,
dateadd(month,1,convert(varchar(7),stamp,23)+'-01'))))
else CONVERT(varchar(20), getdate(),
20)
end
from (
select test.m_id,(max(test.fee)-min(test.fee))
val,CONVERT(varchar(10), test.t_stamp, 23)
stamp
from table_test test
where test.m_id in(17,18) and ?test.t_stamp
< '2013-12-30 00:00:00' and test.t_stamp
> '2013-01-01 00:00:00'
group by CONVERT(varchar(10), test.t_stamp, 23),m_id
) as b group by m_id,
case
when stamp >= CONVERT(varchar(7), stamp, 23) +
'-01' and stamp <= CONVERT(varchar(7), stamp, 23) +
'-15'
then CONVERT(varchar(7), stamp, 23) + '-15'
when stamp >= CONVERT(varchar(7), stamp, 23) +
'-15' and stamp <= CONVERT(varchar(7), stamp, 23) +
'-31'
then CONVERT(varchar(7), stamp, 23) + '-' +
convert(varchar(2),day(dateadd(day,-1,
dateadd(month,1,convert(varchar(7),stamp,23)+'-01'))))
else CONVERT(varchar(20), getdate(),
20)
end
order by stamp desc
--int 轉 varchar
--select 'aa' + convert(varchar(2),day(dateadd(day,-1,
dateadd(month,1,convert(varchar(7),'2013-04-02',23)+'-01'))))
--varchar 轉int
--select convert(int,'02323')
總結
以上是生活随笔為你收集整理的case 日期when 范围_多个日期段如何分组 case when convert等用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10雷电3接口驱动_雷电3 ,高速
- 下一篇: list赋值给另一个list_Pytho