Konversi Klien Asli SQL Server (OLE DB)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Bagian ini membahas cara mengonversi antara nilai datetime dan datetimeoffset . Konversi yang dijelaskan di bagian ini sudah disediakan oleh OLE DB atau merupakan ekstensi OLE DB yang konsisten.

Format literal dan string untuk tanggal dan waktu dalam OLE DB umumnya mengikuti ISO, dan tidak tergantung pada lokal klien. Satu pengecualian adalah DBTYPE_DATE, di mana standarnya adalah OLE Automation. Namun, karena SQL Server Native Client hanya mengonversi antara jenis ketika data dikirimkan ke atau dari klien, tidak ada cara bagi aplikasi untuk memaksa SQL Server Native Client mengonversi antara format DBTYPE_DATE dan string. Jika tidak, string menggunakan format berikut (teks dalam tanda kurung menunjukkan elemen opsional):

  • Format string datetime dan datetimeoffset adalah:

    yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]

  • Format string waktu adalah:

    hh:mm:ss[.9999999]

  • Format string tanggal adalah:

    yyyy-mm-dd

Catatan

Versi sebelumnya dari SQL Server Native Client dan SQLOLEDB menerapkan konversi OLE, jika konversi standar gagal. Akibatnya, beberapa konversi yang dilakukan oleh SQL Server Native Client 10.0 dan yang lebih baru berbeda dari spesifikasi OLE DB.

Konversi dari string memungkinkan fleksibilitas dalam spasi kosong dan lebar bidang. Untuk informasi selengkapnya, lihat bagian "Format Data: String dan Literal" di Dukungan Jenis Data untuk Peningkatan Tanggal dan Waktu OLE DB.

Berikut ini adalah aturan konversi umum:

  • Saat string dikonversi ke jenis tanggal/waktu, string pertama-tama diurai sebagai literal ISO. Jika gagal, string diurai sebagai literal tanggal OLE, yang memiliki komponen waktu.

  • Jika tidak ada waktu tetapi penerima dapat menyimpan waktu, waktu diatur ke nol. Jika tidak ada tanggal yang ada tetapi penerima dapat menyimpan tanggal, tanggal diatur ke tanggal saat ini saat konversi ISO digunakan dan ke 1899-12-30 saat konversi OLE digunakan.

  • Jika tidak ada zona waktu yang ada dalam jenis data yang digunakan klien, tetapi server dapat menyimpan zona waktu, data pada klien diasumsikan berada di zona waktu klien.

  • Jika tidak ada zona waktu yang ada di server tetapi klien memiliki informasi zona waktu, zona waktu UTC diasumsikan. Ini berbeda dari perilaku server.

  • Jika waktu ada tetapi penerima tidak dapat menyimpan waktu, komponen waktu diabaikan.

  • Jika tanggal ada tetapi penerima tidak dapat menyimpan tanggal, komponen tanggal diabaikan.

  • Jika pemotongan detik atau detik pecahan terjadi saat mengonversi dari klien ke server, DB_E_ERRORSOCCURRED dikembalikan dan status DBSTATUS_E_DATAOVERFLOW diatur.

  • Jika pemotongan detik atau detik pecahan terjadi saat mengonversi dari server ke klien, DBSTATUS_S_TRUNCATED diatur

Di Bagian Ini

Konversi Yang Dilakukan dari Klien ke Server
Menjelaskan konversi tanggal/waktu yang dilakukan antara aplikasi klien yang ditulis dengan SQL Server Native Client OLE DB dan SQL Server 2008 (10.0.x) (atau yang lebih baru).

Konversi Yang Dilakukan dari Server ke Klien
Menjelaskan konversi tanggal/waktu yang dilakukan antara SQL Server 2008 (10.0.x) (atau yang lebih baru) dan aplikasi klien yang ditulis dengan SQL Server Native Client OLE DB.

Lihat Juga

Peningkatan Tanggal dan Waktu (OLE DB)