我試圖轉換具有dd/mm/yyyy格式的varchar(255)字符串(dp.Date)(01/08/2017) datetime以yyyy-mm-dd格式(2017-08-01)。將dd/mm/yyyy VARCHAR轉換爲yyyy-dd-mm DATETIME in SQL
我使用CONVERT(DATETIME,dp.Date,120)試過,但我結束與「一個char數據類型到datetime數據類型的轉換導致的外的範圍日期時間值「。錯誤消息。
由於提前,
我試圖轉換具有dd/mm/yyyy格式的varchar(255)字符串(dp.Date)(01/08/2017) datetime以yyyy-mm-dd格式(2017-08-01)。將dd/mm/yyyy VARCHAR轉換爲yyyy-dd-mm DATETIME in SQL
我使用CONVERT(DATETIME,dp.Date,120)試過,但我結束與「一個char數據類型到datetime數據類型的轉換導致的外的範圍日期時間值「。錯誤消息。
由於提前,
我已經成功使用CAST + SUBSTRING來解決它。
投(子(dp.Date,7,4)+子(dp.Date,4,2)+子(dp.Date,1,2)爲DATETIME)
您可以PARSENAME
嘗試如下。執行樣本數據:
DECLARE @TestTable TABLE (Id INT, [Date] VARCHAR (255));
INSERT INTO @TestTable (Id, [Date]) VALUES
(1, '01/08/2017'), (2, '21/09/2017'), (3, '15/12/2017');
SELECT CAST(
CONCAT(PARSENAME(DateValue, 1), '-',
PARSENAME(DateValue, 2), '-',
PARSENAME(DateValue, 3))
AS DATETIME) AS [Date]
FROM (
SELECT REPLACE([Date], '/', '.') AS DateValue FROM @TestTable
) D
您需要使用'CONVERT'給它一個格式,而不是'CAST':CONVERT(DATETIME,dp.Date,120)' – Lamak
對不起,我的意思是寫CONVERT .. 。正如你所看到的,我也使用了CONVERT的語法......編輯了這篇文章......謝謝你的支持! –
然後你的字符串超出了日期的範圍(比如'05/15/2017') – Lamak