Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算开始时间和结束时间之间的差异(以分钟为单位)_Sql_Sql Server - Fatal编程技术网

Sql 计算开始时间和结束时间之间的差异(以分钟为单位)

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

我必须计算开始时间和结束时间的差值。如果结束时间少于开始时间的15分钟,我必须显示一个错误

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()