2017-05-03 7 views
1

サーバータイプ:MSSQL 2014MSSQLハンドル/スプリット不明な日付文字列フォーマット

私の文字列(S):VARCHAR '2017年2月5日7時54分51秒PM'

私はにそれを変換する必要があります任意のサポートされているDateTime形式(または、できれば直接エポックに)。 NULLと ""(空白)行を処理する必要があります。

私は答えを数回、Googleを無駄に過ごしました。残念なビットは、保存されたフォーマットは、日付の形式131とわずかに異なるだけです。

私は次のようなことを試しました。

FORMAT(CONVERT(DATETIME, '2/05/2017 7:54:51 PM'), 'dd/MM/yyyy hh:mm:ss') 
CONVERT(DATETIME, '2/05/2017 7:54:51 PM',22) 
CONVERT(DATETIME, '2/05/2017 7:54:51 PM',131) 

/* SQLエラー(241):文字列から日付/時刻を変換する際、変換に失敗しました。 */

/* SQLエラー(242):varcharデータ型をdatetimeデータ型に変換すると、範囲外の値が発生しました。 */

SUBSTRING/CHARINDEXなどのマックアウォールのように、個々の部分を個別に処理しても問題ありません。

答えて

0

が私の解決策を見つけ参照してください。 「CONVERT」

ソリューション誤解にそれは間違ってきた:

DECLARE @wrongdate DATETIME = CONVERT(VARCHAR, TRY_PARSE('2/05/2017 7:54:51 PM' AS DATETIME USING 'en-gb'), 121); 
SELECT convert(bigint, datediff(ss, '01-01-1970 00:00:00', @wrongdate)); 

これは、あなたが選択の結果に作用する予定がある場合はかかわらずに操作する必要があり、その代わりに選択を変更します。

(CONVERT(bigint, datediff(ss, '01-01-1970 00:00:00', CONVERT(VARCHAR, TRY_PARSE(CAST([MyColumn].Object AS VARCHAR) AS DATETIME USING 'en-gb'), 121)))) AS [my_column] 
関連する問題