2017-06-28 10 views
2

日付処理プロシージャを使用しています。ファイルから入ってくる日付は 'yyyymmdd'と書式設定されており、dateaddやdatepartなどの組み込み日付関数で使用するためにはDATETIMEデータ型に変換する必要があります。'yyyymmdd'形式を使用してVarcharをDatetimeに変換する

CONVERT(DATETIME、datestring) - 式をデータ型datetimeに変換する算術オーバーフローエラーが発生しました。

私は文字列を別々のセクションに分割し、それらを再結合して有効な日時スタンプを形成することを考えましたが、このIFを避けることを望みます。

このvarchar形式から日付または日時に変換する他の方法はありますか?あなたのエラー、あなたのdatestringに基づいて

+0

あなたはあなたが同様に実行しようとしている完全なSQLを提供することができますCONVERTに供給される引数の値は? –

答えて

1

intとして格納することができます。あなたはそのようdatetime型に文字列に変換し、それを変換することができます:

試してみてください。

convert(datetime,convert(char(8),datestring)) 

または

convert(datetime2(2),convert(char(8),datestring)) 


参考:

+0

ありがとうございました。私は明らかにエラーメッセージを読むのに問題があり、それを処理します。私が使用して終了最終的なコードは次の通りであった: 'コード: CONVERT(DATE、CONVERT(VARCHAR(20)、@ nextdate)) 'nextdate' として;' これは正常のようにフォーマットされた文字列から日付型のオブジェクトを生成しました'20180628' – Tribalnecktie

+0

@Tribalnecktie喜んでお手伝いします! – SqlZim

1

明白な解決策はtry_convert()ですが、それはcaseを使用し、代わりに、SQL Server 2008で動作しません。

select (case when datestring between '17530101' and '99991212' 
      then convert(datetime, datestring) 
     end) 
関連する問題