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

T-SQL change Time Portion of a DateTime, using another DateTime Time portion

我有一个 select 声明 returns 以下内容:

SELECT
   StartDate
   ,EndDate
FROM
   MyTable

结果returns以下数据:

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

是否可以使用 DATEADD 函数?

使用DateAdd and DateDiff:

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

我添加了开始日期和结束日期之间的天数差异。 由于 DateDiff 在较早的日期之前有较晚的日期,因此 returns 天数差为负数。

我猜有些人会觉得更易读的另一个选项是:

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