sqlserver中的时间加法

sqlserver中的时间加法,sql,sql-server,Sql,Sql Server,我有两个时间值,比如 Time1=23:59:59:999 Time2=23:59:59:999 当我把这两个时间加起来(Time1+Time2),我想要的结果是47:59:58,而不是23:59:58 我该怎么做?请建议 实际上,在SQL Server中这是非常困难的。《代码》123:59:58怎么样?如果是: select cast(time1 as datetime) + time2 如果您确实希望格式为HH:MM:SS格式,则需要执行大量字符串操作。让我们看看时间和持续时间: 日期

我有两个时间值,比如

Time1=23:59:59:999
Time2=23:59:59:999
当我把这两个时间加起来(Time1+Time2),我想要的结果是47:59:58,而不是23:59:58


我该怎么做?请建议

实际上,在SQL Server中这是非常困难的。《代码》123:59:58怎么样?如果是:

select cast(time1 as datetime) + time2

如果您确实希望格式为HH:MM:SS格式,则需要执行大量字符串操作。

让我们看看时间和持续时间:

  • 日期时间是一个时间点,比如1978年6月28日15:23
  • 没有datepart的时间是一个重复的时间,例如“我每天7:00起床”。(这就是你正在使用的。但是我8:00起床,23:00睡觉,这并不意味着8+23=31。增加时间是没有意义的。)
  • 然后是时间跨度(例如从2016-01-01 3:00到2016-01-02 13:00)
  • 然后是持续时间(例如六分钟)。这就是你想要处理的
您在一个时间段中存储了一个持续时间,这实际上不是合适的数据类型。由于SQL Server在一段时间内不提供特殊的数据类型,因此您可以为此使用数字类型,并存储秒或微秒或任何您认为合适的数据类型。您可以轻松添加这些值(前提是两个值具有相同的单位,例如微秒)


至于显示持续时间,您可以编写一个函数,提供您最喜欢的持续时间格式(例如“913天、9小时、5分钟和55.123秒”)。

请标记您正在使用的sql server版本没有sql server数据类型可以有值
47:59:58
。字符类型可以有值
'47:59:58'
。因此,请按照自己的方式计算日期时间并将其转换为varchar。47:59:58在SQL中不是有效的日期时间-您正在使用的更像是时间跨度-除非有一个新的SQL版本中包含时间跨度类型,否则传统的智慧似乎是将秒、毫秒或刻度存储为bigint,并使用转换函数sadd times。那没有任何意义。问题是你想用这个达到什么目的?你想用它做什么?