You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在T-SQL中对DateTime2与Time(7)进行加减运算?

解决DateTime2与Time类型的加减运算问题

正确实现方式

直接使用加减运算符即可完成DateTime2和Time类型的运算,SQL Server支持这两种类型直接进行加减操作,会完整保留原DateTime2的时间精度:

DECLARE @createdAt DATETIME2 = '2023-03-11 23:08:56.990';
DECLARE @dayOffset TIME(7) = '04:00:00';

-- 时间相加
SELECT @createdAt + @dayOffset AS AddedResult;
-- 返回结果:2023-03-12 03:08:56.9900000

-- 时间相减
SELECT @createdAt - @dayOffset AS SubtractedResult;
-- 返回结果:2023-03-11 19:08:56.9900000

如果一定要使用DATEADD函数,需要先将Time类型转换为对应的总秒数,再基于原DateTime2进行偏移:

-- 用DATEADD实现相加
SELECT DATEADD(SECOND, DATEDIFF(SECOND, '00:00:00', @dayOffset), @createdAt) AS AddedResult_DateAdd;

-- 用DATEADD实现相减
SELECT DATEADD(SECOND, -DATEDIFF(SECOND, '00:00:00', @dayOffset), @createdAt) AS SubtractedResult_DateAdd;

错误原因分析

你之前的DATEADD写法返回错误结果,核心原因是没有以@createdAt的完整时间作为基准进行偏移,而是错误地只处理了日期部分,或是直接用Time生成了新时间,导致原DateTime2的时分秒精度被丢失。

内容的提问来源于stack exchange,提问作者Platypus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:22:20