Sql 计算开始时间和结束时间之间的差异(以分钟为单位)
我必须计算开始时间和结束时间的差值。如果结束时间少于开始时间的15分钟,我必须显示一个错误Sql 计算开始时间和结束时间之间的差异(以分钟为单位),sql,sql-server,Sql,Sql Server,我必须计算开始时间和结束时间的差值。如果结束时间少于开始时间的15分钟,我必须显示一个错误 CREATE PROCEDURE [Travel].[TravelRequirementValidate] @Action char(1) ,@CallId int ,@PhaseId int ,@ShipId int ,@CallStartDate datetime ,@CallEndDate DATETIME ,@CallStartTime datetime ,@CallEndTime date
CREATE PROCEDURE [Travel].[TravelRequirementValidate]
@Action char(1)
,@CallId int
,@PhaseId int
,@ShipId int
,@CallStartDate datetime
,@CallEndDate DATETIME
,@CallStartTime datetime
,@CallEndTime datetime
,@LanguageId int
,@SessionGroup nvarchar(100)
,@SessionPlace nvarchar(100)
,@ActiveFlg tinyint
,@WarningMessage nvarchar(300)=NULL output
,@Minutes int
as
if @Action in ('I','U')
begin
@Minutes=select DATEDIFF(@CallStartDate,@CallStartTime,@CallEndTime) from [Travel].[TravelRequirement]
if @Minutes<=15
begin
raiserror(3,11,1) --CallEndTime must be equals or higher than 15 minutes
return
end
end
但是我有相同的错误函数
DATEDIFF
希望将时间部分作为第一个参数
正确使用它是:
DATEDIFF(minute, @CallStartTime, @CallEndTime)
函数
DATEDIFF
希望将时间部分作为第一个参数
正确使用它是:
DATEDIFF(minute, @CallStartTime, @CallEndTime)
该表达式的正确语法为:
select @Minutes = datediff(minute, @CallStartTime, @CallEndTime)
from [Travel].[TravelRequirement];
然而,这是没有意义的,因为——据推测——这个表有不止一行。您想要哪一行?该表达式的正确语法为:
select @Minutes = datediff(minute, @CallStartTime, @CallEndTime)
from [Travel].[TravelRequirement];
然而,这是没有意义的,因为——据推测——这个表有不止一行。您想要哪一行?我建议使用秒和Device by 60.0-提供更准确的结果:
select @Minutes = datediff(second, @CallStartTime, @CallEndTime)/60.0
from [Travel].[TravelRequirement];
我建议使用seconds和Device by 60.0-提供更准确的结果:
select @Minutes = datediff(second, @CallStartTime, @CallEndTime)/60.0
from [Travel].[TravelRequirement];
DateDiff的第一个参数是您想要的日期部分,您可以使用MINUTE作为输入。除了Brad的输入之外,请确保@CallerStartTime作为datetime变量同时包含时间和日期,或者至少CallStartTime和CallEndTime都不包含日期部分。您可以尝试使用此链接:如果您希望15分钟精确,并表示900秒,请以秒为单位计算时间差,datediff统计跨越的边界,因此,一个仅相隔14分10秒的值,可以跨越15分钟的界限。是否检查了DATEDIFF()?DATEDIFF的第一个参数是您想要的日期部分,您可以使用minute。除了Brad的输入之外,请确保@CallerStartTime作为datetime变量同时包含时间和日期,或者至少CallStartTime和CallEndTime都不包含日期部分。您可以尝试使用此链接:如果您希望15分钟精确,并表示900秒,请以秒为单位计算时间差,datediff统计跨越的边界,因此,一个仅相隔14分10秒的值,可以跨越15分钟的界限。您是否检查了
DATEDIFF()
?