sql server语言 - 如何添加datetime字段与时间字段



我必须在SQL Server 2012中使用T-SQL将time值添加到现有的datetime值。

我在想DATEADD函数它可能是一个解决方案,但它不是…

也许我有某种time转换成datetime ?

所以我有

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

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

EndDate吗?tsql吗?(datetime)

什么线索吗?

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);
结果:

EndDate
-----------------------
2013-02-18 18:45:40.330
现在,您确实不应该在time列中存储intervaltime表示时间点,而不是持续时间。当间隔>= 24小时会发生什么?您应该存储事件的开始时间和结束时间(这些东西通常至少与持续时间一样相关),并且您总是可以从这些点计算持续时间。

试试这样做。注意:我没有在这里使用毫秒

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)

我最近一直在使用Azure-DB,并尝试了下面的代码。这在SQL 2012中不起作用。有关SQL-date算法的更多信息,请参阅这篇文章:Azure-DB与sql-server 2008R2中日期时间和时间算法的差异

我来晚了一点,但既然没有明显的方法……

DECLARE @StartDate datetime
DECLARE @Interval time
DECLARE @EndDate datetime
SET @StartDate = '2013-02-18 18:34:40.330'
SET @Interval = '00:11:00.000000'
SET @EndDate = @StartDate + @Interval
SELECT @StartDate StartDate, @Interval Interval, @EndDate EndDate
Output:
StartDate                  Interval             EndDate
2013-02-18 18:34:40.330    00:11:00.0000000    2013-02-18 18:45:40.330

相关内容

  • 没有找到相关文章

最新更新