Sql server sql server 2005将时间转换为分钟
我的数据库中有几个日期时间函数,但我需要添加一个,它占用datetime字段的时间部分,然后将时间转换为分钟 我有一个函数,可以获取两次之间的分钟数,而不仅仅是一次的分钟数Sql server sql server 2005将时间转换为分钟,sql-server,stored-procedures,stored-functions,Sql Server,Stored Procedures,Stored Functions,我的数据库中有几个日期时间函数,但我需要添加一个,它占用datetime字段的时间部分,然后将时间转换为分钟 我有一个函数,可以获取两次之间的分钟数,而不仅仅是一次的分钟数 ALTER FUNCTION [dbo].[fn_MinutesBetween] ( @fStart datetime, @fEnd datetime ) RETURNS int AS BEGIN RETURN DateDiff(minute, @fStart, @fEnd) 还有一个只占时间的 ALTER
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点是60,凌晨2点是120
下午12点是720等
谢谢获取小时数,转换为整数,乘以60,获取分钟数,转换为整数,将这两个相加
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
按字符串进行铸造是昂贵的()。请尝试以下方法:
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
我在评论中得到了一个链接 并用它来提出一个解决方案
ALTER FUNCTION [dbo].[fn_ReturnMinutesOnly]
( @dt smalldatetime )
RETURNS int
AS
BEGIN
RETURN DATEDIFF(MINUTE, DATEADD(DAY, DATEDIFF(DAY, 0, @dt), 0), @dt)
END
以下帖子的答案显示了如何计算SQL-SERVER 2005中午夜后的分钟数:我尝试将其转换为我的情况,但结果不准确。事实上,转换成功了,我比较错了。谢谢。发布你的答案,这样我就可以给你信用如果另一个答案准确地解决了你的问题,那么这个问题应该作为一个副本关闭。我必须修改它,所以我会发布答案,以防其他人想知道它没有给出准确的时间,当中午12点以后。我修改了上面评论中提供的链接中的信息,它成功地完成了更新,对您的解决方案进行了投票。