sql时间计算
1. sql日期计算
1,
select dateadd(dd,2-datepart(dw,dateadd(wk,周数-1,年份)),dateadd(wk,周数-1,周数)),dateadd(dd,8-datepart(dw,dateadd(wk,周数-1,周数)),dateadd(wk,周数-1,周数))
注意:年份的格式为‘****-01-01’,如你这里的2009年则是‘2009-01-01’
2,
declare @i int
declare @datetime datetime
declare @table table(ID int,date datetime)
set @i=1
set @datetime=年份+月份+01(格式如‘2009-06-01’)
while @datetime < 年份+(月份+1)+01(格式如‘2009-07-01’)
begin
if datepart(weekday,@datetime)=2
begin
insert into @table values(@i,@datetime)
set @i=@i+1
end
set @datetime=dateadd(day,1,@datetime)
end
select * from @table where ID=周数
我这样写应该很容易看,有什么问题再问我,要求加分……
2. SQL中怎么计算两日期之间的天数
DECLARE @Date datetime
set @Date = '2010-01-01'
SELECT DATEDIFF(d,@Date,getdate())
DATEDIFF直接算天数 但你还要按小时来算 估计得自己写自己定义函数了
3. sql 计算出某个时间的到期日
select
p_id,
p_sdate,
case when year(dateadd(mm,6,p_sdate))<=year(getdate()) then dateadd(mm,6,p_sdate)
else cast(cast(year(p_sdate)+1 as char(4))+'-02-28' as datetime) end as p_edate,
case when dateadd(mm,6,p_sdate))<getdate() then '已到期' else ' 正常' end as p_state,
from tb_test
4. sql怎么计算时间差
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF(datepart,startdate,enddate)
参数
datepart
5. 如何计算sql语句执行时间的时间
sql中一般用datediff函数来表示时间差。
基本语法:
DATEDIFF(datepart,startdate,enddate)
说明:
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
例子:
例子 1
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
结果:
DiffDate
1
例子2
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
结果:
DiffDate
-1
6. 求sql 时间的计算方法
DATEADD 函数 [日期和时间]
--------------------------------------------------------------------------------
作用
返回通过将若干日期部分添加到日期中而产生的日期。
语法
DATEADD ( date-part, numeric-expression, date-expression )
date-part :
year | quarter | month | week | day | hour | minute | second | millisecond
参数
date-part 要添加到日期中的日期部分。
numeric-expression 要添加到日期中的日期部分的数值。numeric_expression 可以是任意数字类型,但它们的值将被截断成整数。
date-expression 要修改的日期。
示例
下面的语句返回值:1995-11-02 00:00:00.0。
SELECT dateadd( month, 102, '1987/05/02' ) 标准和兼容性
7. SQL 时间差计算
同一个ID有可能存在多次登陆和登出
用嵌套
--> --> (Roy)生成测试数据
declare @T table([UserID] int,[OnP] nvarchar(3),[OnTime] Datetime)
Insert @T
select 1,N'on','2007-7-1 7:00' union all
select 1,N'off','2007-7-1 8:00' union all
select 2,N'on','2007-8-9 12:45' union all
select 3,N'on','2007-8-9 13:50' union all
select 2,N'off','2007-8-9 16:11' union all
select 3,N'off','2007-9-1 14:00' union all
select 4,N'on','2008-10-1 3:00'
select
[UserID],sum(时间) as 时间
from
(Select [UserID],
datediff(hh,[OnTime],
(select isnull(min([OnTime]),getdate()) from @T where [OnTime]>t.[OnTime] and [OnP]='off')) as 时间
from
@T t
where [OnP]='on')ta
group by [UserID]
8. 在Sql语句中怎样计算出两个日期的差值
sql语句中计算两个日期的差值用datediff函数。
工具:sqlserver 2008 R2
步骤:
1、计算2009-06-23与2009-06-17之间的天数。语句如下:
selectdatediff(d,'2009-06-17','2009-06-23')
2、查询结果:
9. 怎么用SQL语句计算时间间隔
DATEDIFF
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF ( datepart ,startdate ,enddate )
参数
datepart
是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分缩写
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是计算的开始日期。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 年。
计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。
示例
此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
10. sql时间差的计算
这是ORACLE是SQL2000的?
给个ORACLE的例子:
select floor(to_number(to_date(20110621100000,'yyyymmdd hh24:mi:ss')-to_date(20110621095505,'yyyymmdd hh24:mi:ss'))*24*60) from al;