如何使用时间字段添加日期时间字段

Dev*_*per 5 t-sql sql-server time datetime sql-server-2012

我必须使用SQL Server 2012中的T-SQL time为现有datetime值增加值.

我在想DATEADD功能它可能是一个解决方案,但它不是......

也许我以某种方式time转换为datetime

所以我有

StartDate 2013-02-18 18:34:40.330(datetime)

间隔时间00:11:00.0000000(时间)

结束日期 ?tsql?(约会时间)

任何线索?

Aar*_*and 22

DECLARE @d DATETIME = '2013-02-18T18:34:40.330',
        @t TIME(7)  = '00:11:00.0000000';

SELECT EndDate = DATEADD(SECOND, DATEDIFF(SECOND, 0, @t), @d);
Run Code Online (Sandbox Code Playgroud)

结果:

EndDate
-----------------------
2013-02-18 18:45:40.330
Run Code Online (Sandbox Code Playgroud)

现在,你真的不应该在一个列中存储间隔time.time用于表示某个时间点,而不是持续时间.间隔> = 24小时会发生什么?您应该存储事件的开始时间和结束时间(这些事件通常至少与持续时间相关),并且您始终可以从这些点计算持续时间.

  • 但是将*interval*存储为"time"有什么意义呢?为什么不存储秒数? (3认同)

Kaf*_*Kaf 8

尝试这样的事情.注意:我这里不花几毫秒

declare @dt datetime = getdate()
declare @t time = '01:35:45'

select dateadd(second, 
                  datepart(hour,@t) * 3600 + 
                  datepart(minute,@t) * 60 + 
                  datepart(second,@t),
                  @dt)
Run Code Online (Sandbox Code Playgroud)