更新DateTimes的时间,但不更新日期

时间:2012-11-06 20:21:54

标签: sql sql-server

MyTable:
 id     int
 Date1  DateTime
 Date2  DateTime

如何在不影响Date2日期的情况下将Date2的时间设置为与Date1相同?

3 个答案:

答案 0 :(得分:3)

仅使用两个日期之间的天数差异更新Date2

UPDATE MyTable
SET Date2 = DATEADD(DAY, DATEDIFF(DAY, Date1, Date2), Date1);

这将保留Date2的日期部分。

更新:此方法基本上使用Date2作为参考重建Date1,仅添加Date1Date2之间的天数差异 - 从Date1保留TimeStamp。

答案 1 :(得分:1)

这适用于sql server 2008 +

select cast(cast(date2 as date) as datetime) + cast(date1 as time) newdate2
from (select getdate() date2, cast('2012-01-01 20:00' as datetime) date1) a

答案 2 :(得分:0)

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date2)) + DATEADD(day, -datediff(day, 0, @Date1), @Date1)