首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ms sql server 2008中减去两个时间值。

在ms sql server 2008中减去两个时间值。
EN

Stack Overflow用户
提问于 2010-10-05 19:17:20
回答 3查看 51.3K关注 0票数 17

如何在sql server 2008中减去两个时间值。我在存储过程中使用时间变量。

请帮帮忙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-05 19:19:23

您可以使用DATEDIFF()

代码语言:javascript
复制
SELECT DATEDIFF(Day, startDate, endDate)
  FROM table

SELECT DATEDIFF(Second, date, GETDATE())
  FROM table
票数 24
EN

Stack Overflow用户

发布于 2015-09-29 16:17:28

代码语言:javascript
复制
DECLARE @END TIME = '16:00:00.0000000' ,    
     @START TIME = '01:00:00.0000000'
     SELECT convert(TIME,dateadd(ms,DateDiff(ss, @START, @END )*1000,0),114)
票数 4
EN

Stack Overflow用户

发布于 2019-12-02 13:29:01

即使您使用的是偏移值或正常日期,此代码也会给出适当的答案。

代码语言:javascript
复制
   BEGIN TRY
DECLARE @OffSetVal1 VARCHAR(39) = '2019-12-02 09:15:29 +14:00'
      , @OffSetVal2 VARCHAR(39) = '2019-12-02 09:15:29 +12:30'
      , @minutes INT = 0
      , @OffSetDiff VARCHAR(19) = ''
      , @HourDiff INT = 0

SET @HourDiff = DATEDIFF(HOUR,@OffSetVal1,@OffSetVal2) -- To Check digits of hours.
SET @minutes = DATEDIFF(MINUTE,@OffSetVal1,@OffSetVal2) -- To Convert minutes to hours.
SET @OffSetDiff = @minutes / 60 + (@minutes % 60) / 100.0 -- To Check '+' Or '-' And To Get Value. 


SELECT CASE WHEN CAST(@OffSetDiff AS FLOAT) <= 0  
            THEN (CASE WHEN @HourDiff < 10
                      THEN FORMAT(CAST(@OffSetDiff AS FLOAT),'0#.00')
                 ELSE FORMAT(CAST(@OffSetDiff AS FLOAT),'0#.00') 
                 END)
        ELSE (CASE WHEN @HourDiff < 10
                      THEN '+'+FORMAT(CAST(@OffSetDiff AS FLOAT),'0#.00')
                 ELSE '+'+FORMAT(CAST(@OffSetDiff AS FLOAT),'0#.00') 
                 END) 
        END

END TRY
BEGIN CATCH
PRINT N'It seems you provided an invalid DateTimeOffSet Parameter. '
END CATCH

ANS :- +01.30 (#小时和分钟的偏移差异,如果你不想要'+‘,只需从代码中删除,然后运行代码)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3863125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档