当前位置:首页 » 编程语言 » 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;