[MS SQL] 將輸入的時間(分、秒)轉換成中文時間的函數

分享一個時間轉換函數,能將輸入的分鐘或秒數轉換為中文時間。
(適用MS SQL Server 2005 或以上)

EX: 86分 轉換為 1時26分
EX: 93秒 轉換為 1分33秒

-- =================================================
-- Author: <huayu.lee>
-- Create date: <2012/05/16>
-- Description: <時間轉換函數>
-- 參數 @Format: <要轉換的參數的格式('MI','N':分鐘;'S':秒>
-- 參數 @intTime: <要轉換的參數>
-- Return: x時x分x秒
-- =================================================
ALTER FUNCTION [dbo].[uf_TimeTransToChinese]
(
 @Format nvarchar(2),@intTime int
)
RETURNS nvarchar(20)
AS
BEGIN

 DECLARE @ResultVar nvarchar(20)
 DECLARE @hh int, @mm int, @ss int;
 IF(@Format = 'S') BEGIN 
  --輸入為秒(秒 -> 時分秒)
  SET @ResultVar = CONVERT(nvarchar,DATEADD(S,@intTime,0),108);
 END
 ELSE IF (@Format = 'MI' OR @Format = 'N') BEGIN
 --輸入為分(分 -> 時分秒)
  SET @ResultVar = CONVERT(nvarchar,DATEADD(MI,@intTime,0),108);
 END
 
 SET @hh = DATEPART(HOUR,@ResultVar);
 SET @mm = DATEPART(MI,@ResultVar);
 SET @ss = DATEPART(S,@ResultVar);
 SET @ResultVar = '';
 
 IF (@hh>0) BEGIN
  SET @ResultVar = @ResultVar + CONVERT(nvarchar,@hh) + '時'
 END
 
 IF (@mm>0) BEGIN
  SET @ResultVar = @ResultVar + CONVERT(nvarchar,@mm) + '分'
 END
 
 IF(@Format = 'S') BEGIN 
  SET @ResultVar = @ResultVar + CONVERT(nvarchar,@ss) + '秒'
 END
 
 RETURN @ResultVar

END


用法:
 --分鐘數轉換 (輸出結果: 1時26分)
SELECT [dbo].[uf_TimeTransToChinese]('MI', 86)


--秒數轉換 (輸出結果: 2時45分39秒)
SELECT [dbo].[uf_TimeTransToChinese]('S', 9939)

留言

這個網誌中的熱門文章

[MS SQL] 使用PIVOT 做兩個欄位的交叉分析(動態欄位)

[ASP.NET] Gridview動態增加欄位與Null值處理