如何从tsql中的日期和字符串创建datetime

如何从tsql中的日期和字符串创建datetime,sql,tsql,Sql,Tsql,我在T-SQL中有一个存储过程。我想从日期和字符串创建日期时间 所以我有这个: DECLARE @DATE AS DATE DECLARE @TIME AS NVARCHAR(5) SET @DATE = NOW() /*2017-10-11*/ SET @TIME = '08:00' 现在,我想创建一个日期“2017-10-11 08:00:00”这将起作用: DECLARE @DATE AS DATE; DECLARE @TIME AS NVARCHAR(5); SET @DATE =

我在T-SQL中有一个存储过程。我想从日期和字符串创建日期时间

所以我有这个:

DECLARE @DATE AS DATE
DECLARE @TIME AS NVARCHAR(5)

SET @DATE = NOW() /*2017-10-11*/
SET @TIME = '08:00'
现在,我想创建一个日期“2017-10-11 08:00:00”

这将起作用:

DECLARE @DATE AS DATE;
DECLARE @TIME AS NVARCHAR(5);
SET @DATE = GETDATE(); 
SET @TIME = '08:00';

SELECT CONCAT(@DATE, ' ', @TIME);
或者,如果您希望它作为
datetime
datatype

SELECT CAST(CONCAT(@DATE, ' ', @TIME) AS DATETIME)
这将有助于:

DECLARE @DATE AS DATE;
DECLARE @TIME AS NVARCHAR(5);
SET @DATE = GETDATE(); 
SET @TIME = '08:00';

SELECT CONCAT(@DATE, ' ', @TIME);
或者,如果您希望它作为
datetime
datatype

SELECT CAST(CONCAT(@DATE, ' ', @TIME) AS DATETIME)

您看起来有点像:

DECLARE @DATE AS DATE
DECLARE @TIME AS NVARCHAR(5)

SET @DATE = GETDATE() /*2017-10-11*/
SET @TIME = '08:00'

SELECT CONVERT(DATETIME, CONVERT(VARCHAR, @DATE) + ' '+ CONVERT(VARCHAR, @TIME))
输出:

2017-10-11 08:00:00.000

您看起来有点像:

DECLARE @DATE AS DATE
DECLARE @TIME AS NVARCHAR(5)

SET @DATE = GETDATE() /*2017-10-11*/
SET @TIME = '08:00'

SELECT CONVERT(DATETIME, CONVERT(VARCHAR, @DATE) + ' '+ CONVERT(VARCHAR, @TIME))
输出:

2017-10-11 08:00:00.000

下面是一个不包含字符串连接的解决方案:

DECLARE @TIME AS NVARCHAR(5)
DECLARE @MINUTES AS INT
DECLARE @DATETIME AS DATETIME = CONVERT(DATE, GETDATE()) /* 2017-10-11 */

SET @TIME = '08:00'
SET @MINUTES = DATEDIFF(MI,
                        0,
                        @TIME) /* Get number of minutes from @TIME */
SET @DATETIME = DATEADD(MI,
                        @MINUTES,
                        CONVERT(DATETIME, @DATETIME)) /* Add the minutes to @DATETIME */

SELECT @DATETIME

下面是一个不包含字符串连接的解决方案:

DECLARE @TIME AS NVARCHAR(5)
DECLARE @MINUTES AS INT
DECLARE @DATETIME AS DATETIME = CONVERT(DATE, GETDATE()) /* 2017-10-11 */

SET @TIME = '08:00'
SET @MINUTES = DATEDIFF(MI,
                        0,
                        @TIME) /* Get number of minutes from @TIME */
SET @DATETIME = DATEADD(MI,
                        @MINUTES,
                        CONVERT(DATETIME, @DATETIME)) /* Add the minutes to @DATETIME */

SELECT @DATETIME

我可以在select语句中使用它吗?是的,或者你可以将它声明为变量并从中使用它你是use DATE所以getdate()被截断,我现在得到它,请忽略它我可以在select语句中使用它吗?是的,或者你可以将它声明为变量并从中使用它你是use DATE所以getdate()被截断,我现在得到它,请忽略此项。您的代码有效,但日期错误。时间是2017年11月10日08:00,而不是2017年10月11日您的代码有效,但日期错误。时间是2017年11月10日08:00,而不是2017年10月11日