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 日期/時間支援的改進>的「資料格式:字串和常值」一節。

下面是一般轉換規則:

  • 如果沒有任何時間存在,但是接收者可以儲存時間,則時間會設定為零。

  • 如果沒有任何日期存在,但是接收者可以儲存日期,則會使用目前的日期。

  • 如果在資料類型中沒有用戶端所使用的時區存在,但是伺服器可以儲存時區,則會將日期儲存在用戶端的時區中。請注意,這與伺服器行為不同。

  • 如果在伺服器類型中沒有時區存在,但是用戶端類型擁有時區,則會先將時間轉換為 UTC,然後再儲存在伺服器上。

  • 如果有時間存在,但是接收者無法儲存時間,則會忽略時間元件。

  • 如果有日期存在,但是接收者無法儲存日期,則會忽略日期元件。

  • 如果在從 C 轉換為 SQL 時發生秒或毫秒的截斷,就會產生包含 SQLSTATE 22008 以及「日期時間欄位溢位」訊息的診斷記錄。

  • 如果在從 SQL 轉換為 C 時發生秒或毫秒的截斷,就會產生包含 SQLSTATE 01S07 以及「小數位數截斷」訊息的診斷記錄。

本節內容

  • 從 C 轉換成 SQL
    列出當您從 C 類型轉換成 SQL Server 日期/時間類型時應該考量的問題。

  • 從 SQL 轉換成 C
    列出當您從 SQL Server 日期/時間類型轉換成 C 類型時應該考量的問題。