SQL統計查詢時間段內工作日之和

2022-01-29 13:58:00 字數 1444 閱讀 2314

今天有個需求是這樣的,要查出本月的工作日之和,在網上搜尋了一下,發現看起來最簡單的是這樣的:

1

declare

@day date,@count

int2

set@day

=convert(varchar(10),dateadd(dd, -

datepart(dd,getdate())+

1,getdate()), 23)3

set@count=0

4while

@day

<=

convert(varchar(100), getdate(),23)5

begin

6set

@count

=@count+(

7case

datepart(weekday,@day) when

1then08

when

7then09

else110

end)

11set

@day

=dateadd(day,1,@day)12

end13

select

@count

簡單看了看,覺得有些地方可以優化下,之前有過查詢兩個時間段內所有日期的列表的經驗,所以做了一些改動,現一句話就可以查出:

1

select

sum(

2case

when

datepart(weekday,dateadd(dd,number,'

2016.10.01

' )) in (1,7) then

0else

1end) as

workday

3from

master..spt_values

4where type='p

'and

dateadd(dd,number,'

2016.10.01

')<=

'2016.10.18

'

這裡是只查詢非週六週日的,如果想要節假日等,可以自己修改下,達到一樣的效果。

ps:查詢兩個時間段內所有日期的列表

1

select

dateadd(dd,number,'

2016.10.01')

2from

master..spt_values

3where type='p

'and

dateadd(dd,number,'

2016.10.01

')<=

'2016.10.18

'

這裡用了乙個小技巧,利用系統表 master..spt_values 裡自帶的增長集合,來做 dateadd 的運算。

個人經驗,分享下,第一次寫部落格,歡迎交流~

sql查詢時間段區間統計

寫好這個sql,竟然發現不知道現在是上午還是下午。看來我真是埋頭寫了乙個多小時沒有分散注意力了。呵呵。寫在部落格記錄一下!需求 按天統計巡檢的基站數量。建表sql create table plan vp stat patrol detail tid varchar2 40 not null,pat...

SQL查詢時間段內月 周 日明細

查詢以下時間段內分別有幾月 時間段 2019 1 1 到 2019 7 24 select number as wknum from master.spt values where type p and number datepart mm,2019 1 1 and number datepart ...

mysql查詢時間段內資料

今天 select from 表名 where to days 時間欄位名 to days now 昨天select from 表名 where to days now to days 時間欄位名 1 近7天select from 表名 where date sub curdate interval...