datetime データ型変換 (ODBC)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

次の変換は、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 に変換されてからサーバーに格納されます。

  • time が存在するが、受信側が時刻を格納できない場合、時刻コンポーネントは無視されます。

  • 日付が存在するが、受信者が日付を格納できない場合、日付コンポーネントは無視されます。

  • C データ型から SQL データ型に変換する際に秒または秒の小数部の切り捨てが発生すると、"Datetime フィールド オーバーフロー" というメッセージで SQLSTATE 22008 の診断レコードが生成されます。

  • SQL データ型から C データ型に変換する際に秒または秒の小数部の切り捨てが発生すると、"分数が切り捨てられました" というメッセージで SQLSTATE 01S07 の診断レコードが生成されます。

このセクションの内容

C から SQL への変換
C 型からSQL Serverデータ/時刻型に変換するときに考慮する必要がある問題の一覧を示します。

SQL から C への変換
SQL Serverデータ/時刻型から C 型に変換するときに考慮する必要がある問題の一覧を示します。

参照

日付と時刻の強化機能 (ODBC)