2015-06-13 86 views
1

我在我的數據庫中有一列,當前是一個varchar。數據看起來像這樣:解析SQL中的日期

Thu, 4 Jul 2013 09:18:24 
Thu, 11 Jul 2013 10:07:01 
Tue, 28 Jan 2014 11:38:37 
Fri, 26 Jul 2013 14:13:42 

我希望能夠將其轉換爲日期,以便我可以獲取最新的記錄。

+1

請描述您最近的努力及其結果。 –

+0

您將需要使用CONVERT(),並且需要將日期字符串與相應的日期值相匹配。 SQL服務器比Oracle更難轉換日期。 – Doug

+1

@Doug,Mitch小麥的答案如下,使它看起來很容易... –

回答

2

的SQL Server 2012起,您可以使用TRY_PARSE

-- If the culture argument isn't provided, the language of current session is used. 
SELECT TRY_PARSE('Thu, 4 Jul 2013 09:18:24' AS datetime2) AS 'datetime2'; 

TRY_PARSE:返回表達式的結果,轉換爲所請求的數據 類型,或如果轉換失敗。

0

假設字符串總是以三個字符的一天文字後跟一個逗號和空格,你可以例如使用substring()砍掉開始,然後使用cast()將字符串轉換成正確的日期時間,像這樣開頭:

cast(substring(your_date_col, 6, len(your_date_col)) as datetime) 

SQL Fiddle example

還有很多其他的方法可以做到這一點;如果您想了解更多信息,請閱讀演員表/轉換和字符串函數。 (並考慮使用try_cast/try_convert)。