- 這是我的理解:你的源存儲在
VARCHAR
格式(不作爲datetime
)。
- 您想將該自定義格式的字符串源轉換爲可解析的格式。
嘗試這些MS-SQL語句:
/*****
Your Source is in a custom-format string */
DECLARE @vsInpYYYYDDMM varchar(64)
SET @vsInpYYYYDDMM = '2013-03-09 19:29:25'
/*****
Convert that source YYYY-DD-MM format to YYYY-MM-DD format */
DECLARE @vsActualYYYYMMDD varchar(64)
SET @vsActualYYYYMMDD = substring(@vsInpYYYYDDMM, 1,4) + '-' + substring(@vsInpYYYYDDMM, 9, 2) + '-' + substring(@vsInpYYYYDDMM, 6, 2) + ' ' + substring(@vsInpYYYYDDMM,12,99)
PRINT @vsActualYYYYMMDD + ' is a String'
/*****
Convert that into an actual DATETIME variable */
DECLARE @dtDateVar as datetime
SET @dtDateVar = CONVERT(datetime, @vsActualYYYYMMDD, 120)
PRINT CONVERT(varchar, @dtDateVar, 120) + ' is a DateTime'
我在這裏失去了一些東西。如果您調用'CONVERT()'函數詢問字符串類型的輸出,如varchar,那麼它需要日期類型的輸入,如datetime。但是你在說'StateChangeTime'也是一個varchar。要麼通過將日期值存儲爲字符串來做一些非常糟糕的事情(不要這麼做!),要麼你對日期時間值的存儲方式感到困惑。日期時間值以不可讀的二進制格式存儲,並且只能以查詢工具讀取的方式顯示。 –
在SQL Server識別的任何格式中,沒有yyyy-dd-mm格式,因此您需要在組件中切割字符串並重新排列它們。 – Guffa
stateChangeTime是一個dateTime2類型,更新後的問題 – Fearghal