如何在tsql中从日期和字符串中创建日期时间
问题描述:
我在T-SQL中有一个存储过程。我想从日期和字符串创建一个日期时间。如何在tsql中从日期和字符串中创建日期时间
所以我有这样的:
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() /*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();
SET @TIME = '08:00';
SELECT CONCAT(@DATE, ' ', @TIME);
或者如果你想要它作为datetime
数据类型,
SELECT CAST(CONCAT(@DATE, ' ', @TIME) AS DATETIME)
答
这里有一个解决方案whitout字符串连接:
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
你的代码工作,但日期是错误的。时间是10 - 11 - 2017 08:00而不是11-10-2017 – bircastri
@bircastri在上面错了吗? –