SQL Server VARCHAR から DATETIME への変換: 範囲外エラーの防止
CONVERT
を直接使用すると、日付を表す VARCHAR 文字列 ('mmddyyyy' など) を SQL Server 2008 の DATETIME 型に変換すると、多くの場合「範囲外の値」エラーが発生します。 これは、入力形式が予期される DATETIME 形式と一致しないためです。
この解決策には、変換前に VARCHAR 文字列を yyyymmdd
形式に再構築することが含まれます。 その方法は次のとおりです:
<code class="language-sql">DECLARE @Date char(8) SET @Date = '12312009' SELECT CONVERT(datetime, RIGHT(@Date, 4) + LEFT(@Date, 2) + SUBSTRING(@Date, 3, 2))</code>
このコードは次の手順を実行します:
@Date
) は、入力日付文字列を保持します。RIGHT(@Date, 4)
は年 (最後の 4 文字) を抽出します。LEFT(@Date, 2)
は月 (最初の 2 文字) を抽出します。SUBSTRING(@Date, 3, 2)
は日 (文字 3 と 4) を抽出します。yyyymmdd
形式に連結されます。CONVERT()
は最後に、正しくフォーマットされた文字列を DATETIME 値に変換します。この方法は範囲外エラーを効果的に回避し、変換を確実に成功させます。
以上がSQL Server で VARCHAR を DATETIME に変換するときに範囲外エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。