datetime データ型変換 (ODBC)
次の変換は、ODBC によって既に定義されているか、ODBC の一貫性がある拡張機能です。 各プロバイダーによって提供される変換は、プロバイダーが管理するコミュニティによって決まるので、プロバイダー間で一貫性がないことがよくあります。 角かっこで囲まれている値は省略可能です。
datetime 型の文字列の形式は 'yyyy-mm-dd[ hh:mm:ss[.9999999][ plus/minus hh:mm]]' です。
time 型の文字列の形式は 'hh:mm:ss[.9999999]' です。
date 型の文字列の形式は 'yyyy-mm-dd' です。
文字列からの変換では、空白文字やフィールドの幅を柔軟に処理できます。 詳細については、「ODBC の日付/時刻の強化に対するデータ型のサポート」の「データ形式 : 文字列とリテラル」を参照してください。
一般的な変換規則を次に示します。
時刻が存在しなくても受信側が時刻を格納できる場合、時刻は 0 に設定されます。
日付が存在しなくても受信側が日付を格納できる場合、現在の日付が使用されます。
クライアントが使用しているデータ型にタイム ゾーンが存在しなくても、サーバーがタイム ゾーンを格納できる場合、日付はクライアントのタイム ゾーンで格納されます。 これはサーバーの動作とは異なることに注意してください。
サーバーの型にタイム ゾーンが存在しなくても、クライアントの型にタイム ゾーンがある場合、時刻は UTC に変換されてからサーバーに格納されます。
時刻が存在しても受信側が時刻を格納できない場合、時刻要素は無視されます。
日付が存在しても受信側が日付を格納できない場合、日付要素は無視されます。
C データ型から SQL データ型に変換する際に秒または秒の小数部の切り捨てが発生すると、"Datetime フィールド オーバーフロー" というメッセージで SQLSTATE 22008 の診断レコードが生成されます。
SQL データ型から C データ型に変換する際に秒または秒の小数部の切り捨てが発生すると、"分数が切り捨てられました" というメッセージで SQLSTATE 01S07 の診断レコードが生成されます。
このセクションの内容
C から SQL への変換
C 型から SQL Server の日付型または時刻型に変換する際に考慮する問題を示します。SQL から C への変換
SQL Server の日付型または時刻型から C 型に変換する際に考慮する問題を示します。