我有两个变量
declare @dt1 smalldatetime = '2020-07-30 10:00:00' declare @t1 time = '13:00:00'
最简单的方法是什么 t1 至 dt1 得到 '2020-07-30 13:00:00' (不放松2020-07-30)
t1
dt1
'2020-07-30 13:00:00'
jyztefdp1#
我会的 cast() 这个 smalldatetime 到 date 截断时间分量,然后返回 smalldatetime . 那你就可以 cast() 到其他时间分量到 smalldatetime 同时添加以下两项:
cast()
smalldatetime
date
select cast(cast(@dt1 as date) as smalldatetime) + cast(@t1 as smalldatetime) as newdatetime
db小提琴演示:
| newdatetime | | :--------------- | | 2020-07-30 13:00 |
yshpjwxd2#
SELECT REPLACE(REPLACE(REPLACE(@dt1,DATEPART(hour,@dt1),DATEPART(hour,@t1)),DATEPART(MINUTE,@dt1),DATEPART(MINUTE,@t1)),DATEPART(SECOND,@dt1),DATEPART(SECOND,@t1))
e5nszbig3#
我个人会把它们转换成iso varchar 值、串联和转换回:
varchar
DECLARE @dt1 smalldatetime = '2020-07-30T10:00:00'; DECLARE @t1 time = '13:00:00'; SELECT CONVERT(smalldatetime,CONVERT(varchar(10),@dt1,126) + 'T' + CONVERT(varchar(8),@t1,114),126);
j5fpnvbx4#
也许是这个?
declare @dt1 smalldatetime = '2020-07-30 10:00:00' declare @t1 time = '13:00:00' SELECT CAST(LEFT(CONCAT(CAST(@dt1 AS DATE), 'T', @t1), 19) AS SMALLDATETIME)
4smxwvx55#
你可以在电流的基础上再加三个小时 SMALLDATETIME 或者通过连接所需的部分来创建一个新的:
SMALLDATETIME
DECLARE @dt1 SMALLDATETIME = '2020-07-30 10:00:00' DECLARE @t1 TIME = '13:00:00' SELECT @dt1 AS "source", DATEADD(HOUR, 3, @dt1) AS "three hours added", -- just add three hours CONVERT(SMALLDATETIME, -- concatenate the desired parts and convert DATETIMEFROMPARTS(DATEPART(YEAR, @dt1), DATEPART(MONTH, @dt1), DATEPART(DAY, @dt1), DATEPART(HOUR, @t1), DATEPART(MINUTE, @t1), DATEPART(SECOND, @t1), 0) ) AS "concatenated parts"
结果:
source |three hours added |concatenated parts ---------------------------------------------------------------- 2020-07-30 10:00:00 |2020-07-30 13:00:00 |2020-07-30 13:00:00
5条答案
按热度按时间jyztefdp1#
我会的
cast()
这个smalldatetime
到date
截断时间分量,然后返回smalldatetime
. 那你就可以cast()
到其他时间分量到smalldatetime
同时添加以下两项:db小提琴演示:
yshpjwxd2#
e5nszbig3#
我个人会把它们转换成iso
varchar
值、串联和转换回:j5fpnvbx4#
也许是这个?
4smxwvx55#
你可以在电流的基础上再加三个小时
SMALLDATETIME
或者通过连接所需的部分来创建一个新的:结果: