Sql 将时间变量放入smalldatetime变量的最简单方法(仅保留日期的时间部分)
我有两个变量Sql 将时间变量放入smalldatetime变量的最简单方法(仅保留日期的时间部分),sql,sql-server,datetime,sql-server-2008,time,Sql,Sql Server,Datetime,Sql Server 2008,Time,我有两个变量 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)我个人会将它们转换为ISOvarchar值,连接并转换回: DECLARE@dt1 smalldatetime='2020-07-30T10:00:00'; 声明@t1时间='13:00:00'; 选择CONVERT(sma
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)我个人会将它们转换为ISOvarchar
值,连接并转换回:
DECLARE@dt1 smalldatetime='2020-07-30T10:00:00';
声明@t1时间='13:00:00';
选择CONVERT(smalldatetime,CONVERT(varchar(10),@dt1126)+'T'+CONVERT(varchar(8),@t1114),126);
也许是这个
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)
我将cast()
将smalldatetime
转换为date
以截断时间分量,然后返回smalldatetime
。然后您也可以将cast()
转换为smalldatetime
的其他时间组件,并将这两个组件添加到:
select
cast(cast(@dt1 as date) as smalldatetime)
+ cast(@t1 as smalldatetime) as newdatetime
:
| newdatetime |
| :--------------- |
| 2020-07-30 13:00 |
|新日期时间|
| :--------------- |
| 2020-07-30 13:00 |
您可以将三个小时添加到当前的
SMALLDATETIME
,也可以通过连接所需的部分来创建一个新的时间:
DECLARE@dt1 SMALLDATETIME='2020-07-30 10:00:00'
声明@t1时间='13:00:00'
挑选
@dt1作为“源”,
DATEADD(HOUR,3,@dt1)作为“添加了三个小时”,只需添加三个小时即可
CONVERT(SMALLDATETIME,--连接所需的部分并转换
DATETIMEFROMPARTS(DATEPART(年份,@dt1),
日期部分(月,@dt1),
日期部分(日,@dt1),
日期部分(小时,@t1),
日期部分(分钟,@t1),
日期部分(秒,@t1),
0)
)作为“连接部件”
结果:
source |添加三小时|连接部分
----------------------------------------------------------------
2020-07-30 10:00:00 |2020-07-30 13:00:00 |2020-07-30 13:00:00
您尝试过什么?你在哪里卡住了?请让我们看看你的尝试。
| newdatetime |
| :--------------- |
| 2020-07-30 13:00 |