T-SQL使用另一个DateTime Time部分更改DateTime的时间部分

时间:2016-06-08 11:39:21

标签: tsql datetime dateadd

我有一个返回以下内容的select语句:

SELECT
   StartDate
   ,EndDate
FROM
   MyTable

结果返回以下数据:

enter image description here

我想要的是使用EndDate中的值更改StartDate的时间部分。因此,只有两个日期的时间部分相同,取自EndDate。我必须保持相同,直到毫秒。

是否可以使用DATEADD功能?

1 个答案:

答案 0 :(得分:1)

使用DateAddDateDiff

SELECT DATEADD(DAY, DATEDIFF(DAY, EndDate, startDate), EndDate) As StartDate,
       EndDate
FROM MyTable

我正在添加开始日期和结束日期之间的天数差异。 由于DateDiff具有较早日期之前的较晚日期,因此它将天差作为负数返回。

我猜测某些人会发现更具可读性的另一个选择是:

SELECT DATEADD(DAY, -DATEDIFF(DAY, startDate, EndDate), EndDate) As StartDate,
       EndDate
FROM MyTable