我在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'
我在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在上面錯了嗎? –