❶ sql 计算天数
把你这个翻译成sql就是了,不过貌似应该是
不算今天:有效天数=有效期+生产日期-当前日期-1
select (validdate+makedate-today-1) as vd
from tablename
❷ sql语句中可以查询两个日期之间的天数么
select datediff('2009-1-1', '2008-1-1');
用datediff函数,第一个参数是截止时间,第二个参数是起始时间
不好意思,刚才的是mysql,刚看了下sql的文档发现有点区别- -,sql的话,用下面的形式:
DATEDIFF ( datepart , startdate , enddate )
所以你要求2个日期之间间隔的天数,这样写:
datediff( dd, '2008/1/1', '2009/1/2' )
这里的dd表示计算天数差
❸ 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 怎么计算两个时间的天数
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是计算两个日期相差多少天数的函数
SQL是高级的非过程化编程语言,一般针对数据库进行操作。
定义:datediff(day/month/year,startdate,enddate)
日期函数:(要返回的天数/月数/年数,开始日期,结束日期)
具体形式:
select 1,2,datediff(day,1,2) 天数 from aa
❼ 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语句如何获得两个日期之间相差的天数
用sysdate假设结束日期字段是end_date
添加这个判断条件:
where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判断年相同
and to_char("end_date",'MM') = to_char(sysdate,'MM') 判断月相同
and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判断日相同
或者:
where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15
(8)日期计算天数sql扩展阅读:
注意事项
DATEDIFF返回跨两个指定日期的日期和时间边界数。
语法:DATEDIFF ( datepart , startdate , enddate )
参数:datepart
是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
startdate是返回datetime或smalldatetime值或日期格式字符串的表达式。 因为smalldatetime只精确到分钟,所以当用smalldatetime值时,秒和毫秒总是 0。
如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。
enddate是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。
返回类型:integer
注释:startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。
❾ SQL查询,并计算两字段日期差天数
datediff(day/month/year,startdate,enddate)
日期函数:(要返回的天数/月数/年数,开始日期,结束日期)
select
1,2,datediff(day,1,2)
天数
from
aa