2013-04-12 97 views
1

我有我的數據庫中的幾個日期時間函數,但我需要添加一個需要時間字段的時間部分,然後將時間轉換爲分鐘SQL Server 2005的轉換時間爲幾分鐘

我有一個函數可以獲得兩次之間的分鐘數,但不僅僅是單次分鐘數。

ALTER FUNCTION [dbo].[fn_MinutesBetween] 
(@fStart datetime, @fEnd datetime) 
RETURNS int 
AS 
BEGIN 
RETURN DateDiff(minute, @fStart, @fEnd) 

和另外一個,只是取時間部分

ALTER function [dbo].[fn_ReturnTimeOnly] 
(@DateTime smallDateTime) 
returns nvarchar(50) 
as 
begin 
    Return substring(cast(@DateTime as varchar),12,len(@DateTime)) 

end 

我如何才能獲得的時間的分鐘。就像上午1:00將是60,凌晨2:00將120 下午12:00將720等

感謝

+0

下後有答案,說明如何計算**分鐘午夜以來**在'SQL-SERVER 2005':http://stackoverflow.com/questions/4536330/datetime-to-totalminute-in -sql –

+0

我試圖將其轉換爲我的情況,但結果並不準確 –

+0

其實轉換確實有效,我比較錯了謝謝。發佈您的答案,所以我可以給你信用 –

回答

1

獲取的小時數,投了60爲int,乘法,得到將分鐘數轉換爲int,然後添加這兩個。

ALTER function [dbo].[fn_ReturnMinutesOnly] 
(@DateTime smallDateTime) 
returns INT 
as 
begin 
     Return 
      cast(substring(cast(@DateTime as varchar),13,2) as INT) * 60 + 
      cast(substring(cast(@DateTime as varchar),16,2) as INT) 
end 
+0

中午12點後沒有準確的時間。我修改了上面評論中提供的鏈接的信息,它的工作原理是 –

+0

感謝您的更新,upvoted您的解決方案。 –

0

鑄造成弦是昂貴的(I talk about the opposite scenario here, but the concept is the same)。試試這個:

DECLARE @DateTime DATETIME; 
SET @DateTime = GETDATE(); 

SELECT DATEDIFF(MINUTE, DATEDIFF(DAY, 0, @DateTime), @DateTime); 

在你的功能,這將是:

ALTER function [dbo].[fn_ReturnTimeOnly] 
(@DateTime smallDateTime) 
returns INT 
as 
begin 
    Return (SELECT DATEDIFF(MINUTE, DATEDIFF(DAY, 0, @DateTime), @DateTime)); 
end 
2

我得到的評論鏈接到datetime to totalminute 和使用的拿出一個解決方案。

ALTER FUNCTION [dbo].[fn_ReturnMinutesOnly] 
    (@dt smalldatetime) 

RETURNS int 
AS 
BEGIN 
    RETURN DATEDIFF(MINUTE, DATEADD(DAY, DATEDIFF(DAY, 0, @dt), 0), @dt) 
END 
相關問題