当前位置: 代码迷 >> Sql Server >> sql判断一时间字段的间距
  详细解决方案

sql判断一时间字段的间距

热度:52   发布时间:2016-04-24 09:36:43.0
sql判断一时间字段的间隔
我有一个表 我如何判断两条记录的时间间隔 
ID    DutyNum    NAME         UPdateTIME
1          1              TEST       2014-10-30 14:43:30.000
2          1              TEST       2014-10-30 14:44:30.000

如何获得这两条数据的更新时间的间隔
------解决思路----------------------
DATEDIFF(类型,时间1,时间2)可以判断时间的差
类型 Year为年
类型 Month为月
类型 Day为日
类型 HOUR为时
类型 MINUTE为分
类型 second为秒
不知道你具体想怎么处理
------解决思路----------------------
datetime 可以直接相减。不过由于它的零点是从 1900-01-01 00:00:00 起算的,如果不跨日就只显示时间会比较人性化。
WITH table1(ID,UPdateTIME) AS (
    SELECT 1,Convert(datetime,'2014-10-30 14:43:30.000',120) UNION ALL
    SELECT 2,Convert(datetime,'2014-10-30 14:44:30.000',120) 
)
SELECT Convert(varchar(12),t2.UPdateTIME - t1.UPdateTIME,114) 间隔
  FROM (SELECT UPdateTIME FROM table1 WHERE ID=1) t1,
       (SELECT UPdateTIME FROM table1 WHERE ID=2) t2

间隔
------------
00:01:00:000

------解决思路----------------------
if object_id('[Table_1]') is not null drop table [Table_1]
create table [Table_1] (ID int,DutyNum int,NAME varchar(4),UPdateTIME datetime)
insert into [Table_1]
select 1,1,'TEST','2014-10-30 14:43:30.000' union all
select 2,1,'TEST','2014-10-30 14:44:30.000'

select * from [Table_1]


SELECT a.*,ISNULL(DATEDIFF(ss,b.UPdateTIME,a.UPdateTIME),0) AS [diff(s)]
FROM Table_1 a
left JOIN table_1 b ON a.id = b.id+1

/*
ID DutyNum NAME UPdateTIME diff(s)
1 1 TEST 2014-10-30 14:43:30.000 0
2 1 TEST 2014-10-30 14:44:30.000 60*/
  相关解决方案