函数时间转换

USE [ChiefmesNEW]
GO
/****** Object: UserDefinedFunction [dbo].[FN_GetTime] Script Date: 01/15/2016 09:22:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************************************
-- creator: lxf
-- create date: 2015.04.11
-- Description: 获取两个时间之间的天时分
***********************************************/
ALTER FUNCTION [dbo].[FN_GetTime](
@BeginDate varchar(19),
@EndDate varchar(19)
)
RETURNS varchar(20)
AS
BEGIN
declare @DMtime int
declare @D varchar(10)
declare @H varchar(10)
declare @M varchar(10)
declare @S varchar(10)
set @DMtime=DATEDIFF(SECOND,@BeginDate,@EndDate)
--获取两个时间段的秒的相差值
set @D=@DMtime/(3600*24)--天数
set @H=(@DMtime-@D*3600*24)/3600--小时
set @M=(@DMtime-@D*3600*24-@H*3600)/60--分钟
set @S=@DMtime-@D*3600*24-@H*3600-@M*60--秒
return @D+'天'+@H+'小时'+@M+'分钟'
END
----------------------------------------------------------------------------



Alter Function [dbo].[FN_GetTime1]
(
@BeginDate nvarchar(30),
@EndDate nvarchar(30)
)
Returns varchar(100)
as
begin
declare @DMtime int
declare @DHMS varchar(100)

if(@BeginDate<>'')
set @BeginDate=convert(varchar(100),@BeginDate,21)
else
return ''
if(@EndDate<>'')
set @EndDate=convert(varchar(100),@EndDate,21)
else
return ''

set @DMtime=dateDiff(second,@BeginDate,@EndDate)
if(@DMtime>=86400)--大于一天
begin
set @DHMS=convert(varchar(10),CONVERT(decimal(18,2),CONVERT(float,@DMtime)/CONVERT(float,3600*24)))+'天'--1.00天
end
else if(@DMtime>=3600)--小于一天 大于一小时
begin
set @DHMS=convert(varchar(10),CONVERT(decimal(18,2),CONVERT(float,@DMtime)/CONVERT(float,3600)))+'小时'
end
else if(@DMtime>=60)--600s 分钟
begin
set @DHMS=convert(varchar(10),CONVERT(decimal(18,2),CONVERT(float,@DMtime)/CONVERT(float,60)))+'分钟'
end
else--秒
set @DHMS=convert(varchar(10),@DMtime)+'秒'

return @DHMS

end
GO

select CONVERT(decimal(18,2),CONVERT(float,86400)/CONVERT(float,3600*24))
select CONVERT(decimal(18,2),CONVERT(float,600)/CONVERT(float,60))
select [dbo].[FN_GetTime1]('2015-11-19 18:00:19.000','2015-11-19 18:01:22.000')
select [dbo].[FN_GetTime1]('','')
select datediff(SECOND,'2015-11-19 18:00:19.000','2015-11-19 19:01:22.000')

原文地址:https://www.cnblogs.com/chengjun/p/5132356.html