我想加起来一个
DateTime2
和Time(7)
值
DECLARE @createdAt datetime2 = '2023-03-11 23:08:56.990'
DECLARE @dayOffset time(7) = '04:00:00'
所以通过添加 2 个值我会得到
'2023-03-12 03:08:56.990'
'2023-03-11 19:08:56.990'
我找到了不同的方法来添加这两个值,但它总是删除
DateTime
的时间部分
DECLARE @createdAt datetime2 = '2023-03-11 23:08:56.990'
DECLARE @dayOffset time(7) = '04:00:00'
SELECT
DATEADD(DAY, DATEDIFF(DAY, @dayOffset, @createdAt), CONVERT(DATETIME2, @dayOffset))
SELECT
DATEADD(DAY, DATEDIFF(DAY, COALESCE(@dayOffset, '00:00:00'), @createdAt), CONVERT(DATETIME2, COALESCE(@dayOffset, '00:00:00')))
但都返回
2023-03-11 04:00:00.0000000
.
这样做的正确方法是什么?
这是一种方法:
DECLARE @createdAt datetime2 = '2023-03-11 23:08:56.990'
DECLARE @dayOffset time(7) = '04:00:00'
select dateadd(ms, datediff(ms, 0, @dayOffset), @createdAt) -- add
select dateadd(ms, -datediff(ms, 0, @dayOffset), @createdAt) -- subtract
基本上,它将时间值转换为毫秒,然后将其添加/减去您的日期