ddmmyyyy
是不是一個有效的日期格式。您需要先將該字符串轉換爲可解析爲DATE
/DATETIME
的內容。最快的方法可能是將SUBSTRING
件件變成mm/dd/yyyy
格式。這確實轉換成功。但你有一個VARCHAR(8)
。所以你或者需要增加VARCHAR(10)
(或者更好,CHAR(10)
),或者聲明一個局部變量來保存修改後的值。
例如:
DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';
DECLARE @Date2 CHAR(10);
SET @Date2 = SUBSTRING(@Date, 3, 2)
+ '/' + SUBSTRING(@Date, 1, 2)
+ '/' + SUBSTRING(@Date, 5, 4);
SELECT @Date2, CONVERT(DATE, @Date2);
-- 03/25/2014 2014-03-25
編輯: 其實,我找到了一個稍微簡單的方式。我從這種方法開始,但意識到它不適用於ddmmyyyy
而不是mmddyyyy
。我不知何故錯過了dd/mm/yyyy
有適當的日期樣式編號。因此,只需將兩個斜槓添加到傳入的字符串中,然後調用CONVERT
就行,但只有當您使用103
作爲「樣式」時。和第一種解決方案一樣,它需要將傳入參數更改爲VARCHAR(10)
或CHAR(10)
而不是VARCHAR(8)
,或者將局部變量創建爲CHAR(10)
。
DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';
DECLARE @Date2 CHAR(10);
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/');
SELECT @Date2, CONVERT(DATE, @Date2, 103); -- 103 = dd/mm/yyyy
-- 25/03/2014 2014-03-25
轉換「樣式」可以在MSDN頁CAST and CONVERT找到。
你爲什麼要再次將varchar轉換爲varchar?是轉換(日期,@日期,106)不工作? – Mukund
插入數據庫時,不需要將varchar轉換爲日期。它會自動由db處理。 INSERT INTO MyTable(createdDate)值('dd/mm/yyyy')和sql server會爲你弄明白。 – jadavparesh06
按照此鏈接以供參考 http://stackoverflow.com/questions/5287427/how-to-insert-datetime-into-the-sql-database-table – jadavparesh06