在T-SQL中创建DateTime

时间:2015-10-07 08:44:01

标签: sql sql-server tsql datetime

我需要将实际日期时间参考日与表示小时/分钟信息的varchar值连接起来。

我已阅读有关DateTime操作的documentation但尚未找到如何执行此操作。

这是我的样本:

DECLARE @ref_day [datetime]
DECLARE @hours [varchar](15)
DECLARE @result [datetime]

SET @ref_day = '2015-10-06'
SET @hours = '07:30'

SET @result = ???

我的预期结果是一个看起来像这样的DateTime对象:

@result = 2015/10/06 07:30:00.000

5 个答案:

答案 0 :(得分:0)

试试这个:

DECLARE @ref_day [datetime]
DECLARE @hours [varchar](15)
DECLARE @result [datetime]

SET @ref_day = '2015-10-06'
SET @hours = '07:30'

SET @result = DATEADD(day, DATEDIFF(day, 0, @ref_day), @hours)

答案 1 :(得分:0)

使用DATETIMEFROMPARTS SQL Server 2012 +:

<强> LiveDemo

DECLARE @ref_day DATETIME;
DECLARE @hours VARCHAR(100);
DECLARE @result DATETIME;

SET @ref_day = '2015-10-06'
SET @hours = '07:30';

SELECT @result = DATETIMEFROMPARTS(YEAR(@ref_day),
                                   MONTH(@ref_day),
                                   DAY(@ref_day),
                                   DATEPART(hh,@hours),
                                   DATEPART(mi, @hours),
                                   0,
                                   0);

SELECT @result;        

答案 2 :(得分:0)

您可以向@hours变量添加秒数并将其转换为时间,然后在以下内容中与@ref_day结束:

DECLARE @ref_day [datetime]
DECLARE @hours varchar(20)
DECLARE @result [datetime]

SET @ref_day = '2015-10-06'
SET @hours = '07:30'

SET @result = @ref_day + ' ' + cast(@hours + ':00' as time)

SELECT @result

<强>输出

2015-10-06 07:30:00.000

答案 3 :(得分:0)

尝试使用以下查询

DECLARE @ref_day [datetime]
DECLARE @hours [varchar](15)
DECLARE @result [datetime]

SET @ref_day = '2015-10-06'
SET @hours = '07:30'

SET @result = @ref_day + @hours

SELECT FORMAT(@result,'yyyy/MM/dd hh:mm:ss.000', 'en-us')

答案 4 :(得分:0)

可以添加2个日期时间,只需将时间转换为日期时间并添加如下:

DECLARE @ref_day datetime = '2015-10-06'
DECLARE @hours   varchar(15) = '07:30'

SELECT @ref_day +cast(@hours as datetime)

结果:

2015-10-06 07:30