获取SQL存储过程中给出的两小时之间的分钟

时间:2014-12-29 06:13:23

标签: mysql sql sql-server sql-server-2008 stored-procedures

在SQL存储过程中给出两小时之间的分钟。

I am having start time : 07:00:00.0000000
I am having end time hour:15:00:00.0000000
I just want minute between these both. 

这是我想要的SQL存储过程。

SELECT @Minutes= Datediff(Minute, CONVERT(TIME, @StartTime), CONVERT(TIME, @EndTime))

如果开始时间是23到7,则给出负整数。那该怎么办?这就像轮班时间。例如:6月1日23日至6月2日早上7点。

4 个答案:

答案 0 :(得分:0)

使用 DateDiff 功能查找minutes中的差异。问题是因为我们没有提到下一次约会之间的微小差异的日期。

Declare @StartTime datetime='2014-06-01 23:00:00',
        @EndTime   datetime='2014-06-02 7:00:00'

SELECT Datediff(minute, @StartTime,  @EndTime )--480

SP应该像

Create Procedure usp_MinuteDiff(@StartTime DateTime,@EndTime DateTime)
as
Begin
 SELECT Datediff(Minute,@StartTime,@EndTime) 
End

答案 1 :(得分:0)

试试这个

DECLARE @STARTDATE TIME = '07:00:00.0000000'
DECLARE @ENDDATE TIME = '15:00:00.0000000'

SELECT DATEDIFF(MINUTE, @STARTDATE,@ENDDATE)

更新:

DECLARE @STARTDATE DATETIME='2014-06-23 23:00:00'
DECLARE @ENDDATE DATETIME = '2014-06-24 07:00:00'

SELECT DATEDIFF(MINUTE, @STARTDATE,@ENDDATE)

答案 2 :(得分:0)

DECLARE @STARTDATE DATETIME='2014-06-23 23:00:00'
DECLARE @ENDDATE DATETIME = '2014-06-24 07:00:00'

SELECT DATEDIFF(MINUTE, @STARTDATE,@ENDDATE)

在datediff函数中,datepart指定需要提取的数据,它需要几小时并计算差异

答案 3 :(得分:0)

DATEDIFF(MINUTE,CAST(CAST(GETDATE()as date)as datetime)+ CAST(@StartTime as datetime),       CAST(CAST(DATEADD(DAY,(@StartTime> @EndTime THEN 1 ELSE 0 END),GETDATE())as date)as datetime)+ CAST(@EndTime as datetime))..

这是简短而又甜蜜的答案。