/* 根據時間段,返回時間段的工作小時數:一天按8小時 */
create function [dbo].[fc_getworkhour] (@startdate **alldatetime,@enddate **alldatetime)
returns int as
begin
declare @delayday int --暫用工時(日)
if(@startdate is null)
return 0
if(@enddate is null)
return 0
declare @tmptb table(dt **alldatetime)
declare @weekendnum int
declare @s **alldatetime
set @s=@startdate
while @s<=convert(varchar(4),year(@enddate))+'-'+convert(varchar(2),month(@enddate))+'-'+convert(varchar(2),day(@enddate))+' 23:59'
begin
insert into @tmptb select @s set @s=dateadd(day,1,@s)
end --時間段內工作日個數
select @weekendnum=count(*) from @tmptb where datepart(weekday,dt) not in (1,7)--工作個數(星期日為1,星期一為2,星期二為3....)
--開頭,結尾是否是工作日,如果是的話,就除去
if(datepart(dw,@startdate)>1 and datepart(dw,@startdate)<7)
begin
set @weekendnum=@weekendnum-1
end
if(datepart(dw,@enddate)>1 and datepart(dw,@enddate)<7)
begin
set @weekendnum=@weekendnum-1
end
--計算整工作日小時數
set @delayday= 8*@weekendnum*60
if(@delayday<0)
begin
set @delayday=0
end
if( datediff(dd,@startdate,@enddate)=0)--開始結束同一天
begin
set @delayday=datediff(mi,@startdate,@enddate)
end
else
begin
if(datepart(dw,@startdate)>1 and datepart(dw,@startdate)<7)
begin
if(datediff(mi,@startdate,convert(varchar(4),year(@startdate))+'-'+convert(varchar(2),month(@startdate))+'-'+convert(varchar(2),day(@startdate))+' 17:30')>0)
begin
set @delayday=@delayday+datediff(mi,@startdate,convert(varchar(4),year(@startdate))+'-'+convert(varchar(2),month(@startdate))+'-'+convert(varchar(2),day(@startdate))+' 17:30')
end
end
if(datepart(dw,@enddate)>1 and datepart(dw,@enddate)<7)
begin
if(datediff(mi,convert(varchar(4),year(@enddate))+'-'+convert(varchar(2),month(@enddate))+'-'+convert(varchar(2),day(@enddate))+' 08:30',@enddate)>0)
begin
set @delayday=@delayday+datediff(mi,convert(varchar(4),year(@enddate))+'-'+convert(varchar(2),month(@enddate))+'-'+convert(varchar(2),day(@enddate))+' 08:30',@enddate)
end
end
end
return @delayday end
根據時間段查詢資料
開發工具與關鍵技術 mvc 在我們做專案的時候,我們有時需要查詢一部分的資料,由於可能在 中的資料有成千上萬條資料,我們不可能一一的根據單條資料去查詢。在這個時候我們可以根據一段時間段去查詢資料。先說說這種做法的邏輯。我們在資料庫那邊在我們需要操作的表中必須要有乙個時間的字段。然後我們在專案中獲取乙...
時間段函式
在sql server中,操作select查詢時,將時間型別的字段作為搜尋條件,如果稍微不注意,也許沒有辦法查詢到意想的結果。條件不能用等於,而是時間段。如某一天,應該是從00 00 00至23 59 59之間,方可查詢出結果出來。因此,為了開發方便,寫了乙個函式 setansi nulls ong...
根據時間段查詢的sql語句
實體類屬性 datetimeformat pattern yyyy mm dd hh mm ss apimodelproperty value 起始時間 private localdatetime starttime datetimeformat pattern yyyy mm dd hh mm s...