2012-04-27 10 views
0

varchar(max)として保存された 'Fri、9 Mar 2012 10:43:21 +0000(UTC)'の文字列をdatetimeという値'09 -03に変換するにはどうすればよいですか-2012 '、これは文字列の日付部分ですか? MSによるdatetimeから日付を抽出する方法

+0

DBのデータ型は何ですか?それは '日時計ですか? – dsolimano

+1

[SQL Serverのdatetimeデータ型からのみ日付部分を返す方法]の可能な複製(http://stackoverflow.com/questions/113045/how-to-return-the-date-part-only-from-a- sql-server-datetime-datatype) – dsolimano

+0

いいえ、列の長さはvarchar(max)です。 –

答えて

0

http://msdn.microsoft.com/en-us/library/ms187928.aspx

CONVERT()関数は、別のデータ型の表現に変換する一般的な機能です。 CONVERT()関数を使用して、さまざまな形式の日付/時刻データを表示できます。

と表のリスト105は、必要なスタイルのコードです。

だから、あなたの例の日のために:

CONVERT(VARCHAR(10), 'Fri, 9 Mar 2012 10:43:21 +0000 (UTC)', 105) 

は、おそらくトリックを行う必要があります。

0

私が最初にあなたの日付を切り刻むしなければならなかったが、ここに行く:

DECLARE @ds varchar(30)='Fri, 9 Mar 2012 10:43:21 +0000 (UTC)'; 
SELECT CONVERT(VARCHAR(10) 
,CAST(SUBSTRING(@ds 
,CHARINDEX(' ',@ds) 
,LEN(@ds)-(PATINDEX('%[0-9][0-9][0-9][0-9]%',@ds)+6)) 
AS DATETIME) 
,105  
) 

結果:

09-03-2012 
+0

なぜ賛成投票ですか?これは機能しませんか?より良い考えがあれば、ここでそれを共有することを歓迎します。 –

0

をお持ちの場合SQL Server 2012のは、この試すことができます:

選択CONVERT(日付、TRY_PARSE DATETIME2 AS( '金、2012年3月9日10時43分21秒0000'))

注:(UTC)が削除されても、正しく解析されませんでした。

また、その時間値をローカライズする必要があるかどうかに注意してください。たとえば、私はAZに住んでいるので、通常はUTCから-7時間を引いてローカライズします。タイムゾーンに基づいて同様の調整を行う必要があります

関連する問題