我要time
值添加到现有的SQL Server中使用T-SQL datetime
值2012如何添加日期时间字段有时间字段
我想,DATEADD功能它可能是一个解决方案,但它是不...
也许我有某种方式time
转换为datetime
?
所以不得不
开始日期2013年2月18日18:34:40.330(日期时间)
间隔00:11:00.0000000(时间)
结束日期? tsql? (日期时间)
任何线索?
我要time
值添加到现有的SQL Server中使用T-SQL datetime
值2012如何添加日期时间字段有时间字段
我想,DATEADD功能它可能是一个解决方案,但它是不...
也许我有某种方式time
转换为datetime
?
所以不得不
开始日期2013年2月18日18:34:40.330(日期时间)
间隔00:11:00.0000000(时间)
结束日期? tsql? (日期时间)
任何线索?
尝试类似这样的事情。注:我没有采取毫秒这里
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)
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
列存储间隔。 time
旨在表示时间点,而不是持续时间。当间隔> = 24小时时会发生什么?您应该存储事件的开始时间和结束时间(这些事情通常至少与持续时间相关),并且始终可以计算这些时间点的持续时间。
我最近一直在使用Azure-DB,并尝试下面的代码。这并不在SQL 2012年工作 看到这个职位上SQL最新算术更多的信息: Difference in datetime and time arithmetic in Azure-DB vs. 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
感谢您的最后一段!是的,我存储间隔<24小时。 – 2013-03-05 16:09:54
但是,将间隔*作为“时间”存储的意义何在?为什么不储存秒数? – 2013-03-05 16:10:57
当我们有用户直接输入的静态表格时,用时间来存储是非常有益的,因此它更易于理解。使用DATEDIFF获得秒数非常聪明。谢谢。 – 2013-10-20 16:12:11