『壹』 sql如何計算兩個日期間的工作日,剔除節假日
select count(distinct day) from tb
where day between day1 and day2 --找出兩天內的日子
and weekday(day)<5 --5代表周六,6代表周日,剔除掉
『貳』 SQL 資料庫如何計算兩個日期的簡隔時間,以下圖為例!
select datediff(day,『2010-12-1』,『2010-12-3』)
返回的結果是 2
當然你也可以從表中選擇出來的兩個的欄位,
SELECT datediff(day,date1,date2) FROM date_db.date_table
返回的是 date2-date1 之間的天數
上面是計算的是在資料庫date_db中表date_table中時間時段date1與date2之間的相隔天數
『叄』 sql中該如何算成倆個時間之間的天數
解決方案:
使用兩個內聯視圖求WARD和ALLEN的HIREDATE(聘用日期)。然後使用DAYS 函數從一個HIREDATE中減去另一個HIREDATE:
select days(ward_hd) - days(allen_hd)
from (
select hiredate as ward_hd
from emp
where ename = 'WARD'
) x,
select hiredate as allen_hd
from emp
where ename = 'ALLEN'
) y
Oracle和PostgreSQL
使用兩個內聯視圖求WARD和ALLEN的HIREDATE(聘用日期)。然後從一個日期中減去另一個日期:
select ward_hd - allen_hd
from (
select hiredate as ward_hd
from emp
where ename = 'WARD'
) x,
(
select hiredate as allen_hd
from emp
where ename = 'ALLEN'
) y
『肆』 sql 怎麼計算兩個時間的天數
select datediff(part,StartDate,EndDate)
part:日期的哪一部分計算差額的參數
StartDate:開始時間
EndDate:截至時間
如:select datediff(dd,'2010-09-20','2010-09-21')
結果:1
即兩個日期相差1天;
select datediff(mm,'2010-09-20','2010-09-21')
結果:0
即兩個日期都是同月。
『伍』 SQL語句如何統計a時間和b時間有多少個工作日
首先保證,a 與 b 表的時間是 date 或者 datetime 類型:
1、Oracle 寫法:
select sum (case when to_char(a.time,'d')-1>=1 and to_char(a.time,'d')-1<=5 then 1
else 0
end)
from tablename a;
2.MSSQL 和 Sybase 寫法:
select sum(case when datepart(weekday,a.datetime)-1 >=1 and datepart(weekday,a.datetime)-1<=5 then 1
else 0
end)
from tablename a
『陸』 求教如何利用MySQL語句計算兩個日期中工作日的天數(除去周六日的天數)
DATEDIF(start_date,end_date,unit)
Start_date 為一個日期,它代表時間段內的第一個日期或起始日期。
End_date 為一個日期,它代表時間段內的最後一個日期或結束日期。
Unit 為所需信息的返回類型。
Unit 返回
註:結束日期必須大於起始日期
"Y" 時間段中的整年數。
"M" 時間段中的整月數。
"D" 時間段中的天數。
"MD" start_date 與 end_date 日期中天數的差。忽略日期中的月和年。
"YM" start_date 與 end_date 日期中月數的差。忽略日期中的年。
"YD" start_date 與 end_date 日期中天數的差。忽略日期中的年。
『柒』 Excel中怎麼樣計算兩個日期之間的工作日天數
計算兩個日期之間的工作日天數的方法:
1、使用NETWORKDAYS函數來計算工作日的數量
在空白單元格中,請輸入此公式=
NETWORKDAYS(B1,B2)(B1代表開始日期和B2表示結束日期)然後鍵入輸入鍵,您將計算兩個日期之間的周日和周六的工作日數量。
如圖:
注意:
有時候,這兩天可能會有一些假期,如果你想計算這兩天之間的工作日,你應該排除星期六,星期天和假日。
這個NETWORKDAYS功能也可以幫助你。
該語法NETWORKDAYS功能是:=
NETWORKDAYS(開始日期,結束日期,假期)
將假期日期輸入到要從日期中減去的單元格中,然後輸入此公式=
NETWORKDAYS(B1,B2,B3:E3)(B1表示開始日期,B2代表結束日期和B3:E3是假期列表),然後按輸入鍵,計算了不包括周日,周六和節假日的工作日數。
2、使用SUM和INT函數來計算工作日的數量
除NETWORKDAYS函數外,還有另一個公式可以幫助您獲取兩個日期之間的工作日數量。
在空白單元格中輸入此公式=SUM(INT((WEEKDAY(B1-{2,3,4,5,6})+B2-B1)/7)),然後點擊輸入關鍵,並且所有的工作日將被計算。
看截圖:
備註:
1、有時候,你每星期有6個工作日(從星期一到星期六),所以你需要計算包括周六在內的工作日的數量,但不包括周日。
在這種情況下,您可以應用此公式=SUM(INT((WEEKDAY(B1-{2,3,4,5,6,7})+B2-B1)/7)).
2、在上面的公式中,B1代表開始日期和B2表示結束日期。
兩個日期之間的全部天數:
1、假設開始日期為11
/
21
/
2016,結束日期為3
/
18
/
2017,然後計算這期間的天數,如圖。
2、在空白單元格中,請輸入此公式=
B2-B1,然後按輸入鍵,你會得到兩個日期之間的天數。
看截圖:
注意:在上面的公式中,B2吸引最終數據,並且B1indacates的開始日期。
您可以根據需要更換它們。
計算兩個日期之間的周末天數
這里也有一些公式來計算給定期間內的周末天數(周六和周日)。
鍵入此公式=SUM(INT((WEEKDAY(B1-{1,7})+B2-B1)/7))(B1表示開始日期,B2代表結束日期)放入空白單元格中,然後按輸入關鍵,現在你會得到這兩個日期之間的周末。
看截圖:
注意:另一個公式來介紹您計算給定兩個日期的周末。
請申請這個=
SUMPRODUCT(
-
(WEEKDAY(ROW(INDIRECT(B1&
「:」
&B2)),2)>
5))(B1表示開始日期和B2代表結束日期)。
『捌』 SQL語句計算兩個日期之間有多少個工作日
/*
因為工作中一個奇怪的需求,要用sql語言計算兩個日期間有多少個工作日。
設定是一個星期有5個工作日,從星期一到星期五
說明:
第一個星期的工作日數:datepart(dw,
@begdt)-datepart(dw,
@begdt),最少0天
末一個星期的工作日數:datepart(dw,
@enddt),最多5天
計算方法:
如果兩個日期處在同一個星期內,直接計算「第一個星期的工作日數」
否則按下面的公式計算
(兩個日期間的總天數
-
第一個星期的天數
-
末一個星期的天數)
/
7
*
5
+
第一個星期的工作日數
+
末一個星期的工作日數
*/
--計算並返回兩個日期間的工作小時數(工作日*8)按周一到周五計算
--必須先set
datefirst
1
create
function
dbo.calcworkhours(@bdate
datetime,
@edate
datetime)
returns
integer
as
begin
declare
@hours
integer
if
@@datefirst
<>
1
or
@bdate
>
@edate
return
-1
select
@hours
=
--如果終止日期與起始日期在同一個星期內,只需要計算有幾天即可
case
when
datepart(wk,
@edate-1)-datepart(wk,@bdate)
=
0
then
case
when
datepart(dw,
@bdate)
>
5
then
0
when
datepart(dw,
@edate-1)
>
5
then
6
-
datepart(dw,
@bdate)
else
datepart(dw,
@edate-1)
-
datepart(dw,
@bdate)
+
1
end
--如果終止日期與起始日期在不同的星期內
--首先計算出除前後兩個星期外完整的星期數
*
5
else
(datediff(dd,@bdate,@edate)
-
(8-datepart(dw,
@bdate))
-
datepart(dw,
@edate-1))
/
7
*
5
--再加上第一個星期里的工作日數
+
case
when
datepart(dw,
@bdate)
<
6
then
6
-
datepart(dw,
@bdate)
else
0
end
--加上末一個星期里的工作日數
+
case
when
datepart(dw,
@edate-1)>5
then
5
else
datepart(dw,
@edate-1)
end
end
*
8
return
@hours
end
『玖』 SQL中怎麼計算兩日期之間的天數
按小時統計,符合條件的為一天
小時數=select datediff(hh,'2007-10-12 9:00:00','2007-10-12 18:00:00')
『拾』 sql:當前日期是本月第幾個工作日
create table #Holiday(dateday datetime)
insert into #Holiday values('2016-08-03 15:10:23');
insert into #Holiday values('2016-08-05 15:10:23');
insert into #Holiday values('2016-08-11 15:10:23');
insert into #Holiday values('2016-08-15 15:10:23');
SET DATEFIRST 1
DECLARE @CAL DATETIME --需要計算的日期
SET @CAL ='2016-08-07 15:12:41'
;WITH CTE
AS (
SELECT RW=ROW_NUMBER()OVER(ORDER BY name)
FROM [Master].dbo.spt_values --找一個系統表(記錄數超過31的表)
)
,CTE2
AS (
SELECT RW,DT=DATEADD(DAY,RW-DAY(@CAL),@CAL)
FROM CTE
WHERE RW <=DAY(@CAL)
)
,CTE3
AS (
SELECT A.RW,A.DT
,IsHoliday =Case When DATEPART(weekday ,DT) IN(6,7) OR B.dateday is not null THEN 1 ELSE 0 END
FROM CTE2 A
LEFT JOIN #Holiday B ON CONVERT(NVARCHAR(10),A.DT,121) =CONVERT(NVARCHAR(10),B.dateday,121)
)
SELECT Count(1) FROM CTE3
WHERE IsHoliday =0