當前位置:首頁 » 編程語言 » sql兩日之間怎麼算天數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql兩日之間怎麼算天數

發布時間: 2022-04-18 03:45:01

A. 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

B. SQL是計算兩個日期相差多少天數的函數

SQL是高級的非過程化編程語言,一般針對資料庫進行操作。

定義:datediff(day/month/year,startdate,enddate)

日期函數:(要返回的天數/月數/年數,開始日期,結束日期)

具體形式:
select 1,2,datediff(day,1,2) 天數 from aa

C. 在SQL Server中用那句sql語句可以得出兩天之間的天數

這是計算一個月第一天的SQL 腳本
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
這里我是用周(wk)的時間間隔來計算哪一天是本周的星期一。
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
一年的第一天

現在用年(yy)的時間間隔來顯示這一年的第一天。

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

季度的第一天



SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

D. SQL中怎麼計算兩日期之間的天數

按小時統計,符合條件的為一天

小時數=select datediff(hh,'2007-10-12 9:00:00','2007-10-12 18:00:00')

E. SQL查詢,並計算兩欄位日期差天數

datediff(day/month/year,startdate,enddate)
日期函數:(要返回的天數/月數/年數,開始日期,結束日期)
select 1,2,datediff(day,1,2) 天數 from aa

F. sql中該如何算成倆個時間之間的天數

解決方案:

使用兩個內聯視圖求WARD和ALLEN的HIREDATE(聘用日期)。然後使用DAYS 函數從一個HIREDATE中減去另一個HIREDATE:

  1. select days(ward_hd) - days(allen_hd)

  2. from (

  3. select hiredate as ward_hd

  4. from emp

  5. where ename = 'WARD'

    ) x,

  6. select hiredate as allen_hd

  7. from emp

  8. where ename = 'ALLEN'

  9. ) y

Oracle和PostgreSQL

使用兩個內聯視圖求WARD和ALLEN的HIREDATE(聘用日期)。然後從一個日期中減去另一個日期:

  1. select ward_hd - allen_hd

  2. from (

  3. select hiredate as ward_hd

  4. from emp

  5. where ename = 'WARD'

  6. ) x,

  7. (

  8. select hiredate as allen_hd

  9. from emp

  10. where ename = 'ALLEN'

  11. ) y

G. 求:sql中解決一個表中所有兩個日期之間所有天數的語句

--從開始日期到結束日期,每天一條記錄,你的馮賀截止日期是2013/6/8吧,我的是mssql
CreateTableT
(
住院號varchar(10),
姓名varchar(10),
開始日期datetime,
結束日期datetime
)

insertintoTvalues('185316','楊浩','2013/1/10','2013/1/12')
insertintoTvalues('192405','張鑫','2013/3/3','2013/3/4')
insertintoTvalues('203385','馮賀','2013/6/3','2013/6/8')

--遞歸查詢
WithTT
As
(
Select住院號,姓名,開始日期,結束日期,開始日期As日期fromT
unionall
Select住院號,姓名,開始日期,結束日期,dateadd(day,1,日期)FromTT
Wheredateadd(day,1,日期)<=結束日期
)
Select*FromTT
OrderBy住院號,日期


--這個也可以
Selectt.*,DATEADD(DD,number,開始日期)As日期
FromtCrossJoinmaster.dbo.spt_valuesb
WhereType='P'andDATEADD(DD,number,開始日期)<=結束日期

H. 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
即兩個日期都是同月。

I. 我要將這兩個表中的兩個日期之間的間隔天數算出來,用sql語句怎麼做,

這個 to_date('20020405','yyyymmdd') 要看你 appealdate是怎麼存數據決定的格式 如果數據 是 20020405 就是yyyymmdd ,如果是2002-04-05 才是你寫的那種 yyyy-mm-dd
我現在用的資料庫不是oracle,所以不太清楚oracle有啥區別,你試試
另:這是我網路的答案,希望對你有用
兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from al;