表中的STime字段是nvarchar类型的 我转换成float后能做减法了 但这样的话算出来的数据是不正确的
SELECT LOG_ID,FuncNO,MAX(Convert(float,STime))-MIN(Convert(float,STime)) Time1
FROM ta_TLog
GROUP BY LOG_ID,FuncNO
比如以下2行数据17:00:02,015 减16:59:55,031 算出来之后是4046984就不对了,要怎么做才能算出正确的时间值呢
LOG_ID FuncNO SDate STime
9A2E59F1 MemberInput 20141222 165955031
9A2E59F1 MemberInput 20141222 170002015
------解决思路----------------------
转换成yyyy-mm-dd这样的格式,然后用datediff函数进行日期运算,另外,目前没发现有什么地方需要用nvarchar/nchar类型来存储日期的
------解决思路----------------------
use master
go
if OBJECT_ID('time1') is not null
drop table time1
create table time1(
loG_id varchar(20),
funcNO varchar(20),
SDate varchar(20),
STime varchar(20)
)
insert into time1
select '9A2E59F1','MemberInput','20141222','165955031'
union all
select '9A2E59F1','MemberInput','20141222','170002015'
go
select log_id,funcno,max(cast(left(stime,2)+':'+SUBSTRING(stime,3,2)+':'+SUBSTRING(stime,5,2)+'.'+RIGHT(stime,3) AS datetime))-
min(cast(left(stime,2)+':'+SUBSTRING(stime,3,2)+':'+SUBSTRING(stime,5,2)+'.'+RIGHT(stime,3) AS datetime))
from time1 group by log_id,funcno