Ulepszenia daty i godziny natywnego klienta SQL Server

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Ważna

Klient natywny SQL Servera (SNAC) nie jest dostarczany z:

  • SQL Server 2022 (16.x) i nowsze wersje
  • SQL Server Management Studio 19 i nowsze wersje

Program SQL Server Native Client (SQLNCLI lub SQLNCLI11) oraz starszy dostawca microsoft OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku tworzenia nowych aplikacji.

W przypadku nowych projektów użyj jednego z następujących sterowników:

W przypadku programu SQLNCLI dostarczanego jako składnik aparatu bazy danych programu SQL Server (wersje 2012–2019), proszę sprawdzić wyjątek cyklu wsparcia .

Ten temat opisuje wsparcie dla natywnego klienta SQL Server dla typów danych danych i godzin, które zostały dodane w SQL Server 2008 (10.0.x).

Więcej informacji o ulepszeniach dat/godziny można znaleźć w artykule Ulepszenia daty i godziny (OLE DB) oraz Ulepszenia dotyczące daty i godziny (ODBC).

Usage

Poniższe sekcje opisują różne sposoby wykorzystania nowych typów dat i godzin.

Użyj daty jako odrębnego typu danych

Począwszy od SQL Server 2008 (10.0.x), rozszerzone wsparcie dla typów dat/czasu sprawia, że korzystanie z typu ODBC SQL_TYPE_DATE (SQL_DATE dla aplikacji ODBC 2.0) oraz DBTYPE_DBDATE OLE DB jest bardziej efektywne.

Używaj czasu jako odrębnego typu danych

OLE DB ma już typ danych, który zawiera tylko czas, DBTYPE_DBTIME, z precyzją 1 sekundy. W ODBC odpowiednikiem jest SQL_TYPE_TIME (SQL_TIME dla aplikacji ODBC 2.0).

Nowy typ danych czasowych SQL Server ma ułamki sekund z dokładnością do 100 nanosekund. Wymaga to nowych typów w SQL Server Native Client: DBTYPE_DBTIME2 (OLE DB) oraz SQL_SS_TIME2 (ODBC). Istniejące aplikacje napisane z myślą o czasach bez ułamków sekund mogą używać kolumn time(0). Istniejące typy SQL_TYPE_TIME DBTYPE_TIME i ODBC w OLE DB oraz odpowiadające im struktury powinny działać poprawnie, chyba że aplikacje polegają na typie zwracanym w metadanych.

Używaj czasu jako odrębnego typu danych z rozszerzoną precyzją ułamkowych sekund

Niektóre zastosowania, takie jak sterowanie procesem i produkcyjne, wymagają możliwości obsługi danych czasowych z precyzją do 100 nanosekund. Nowymi typami do tego celu są DBTYPE_DBTIME2 (OLE DB) i SQL_SS_TIME2 (ODBC).

Używaj czasu datowego z rozszerzoną precyzją ułamkowych sekund

OLE DB już definiuje typ z precyzją do 1 nanosekundy. Jednak ten typ jest już używany przez istniejące aplikacje SQL Server i takie aplikacje mają oczekiwanie jedynie 1/300 sekundy precyzji. Nowy typ datetime2(3) nie jest bezpośrednio zgodny z istniejącym typem datetime. Jeśli istnieje ryzyko, że wpłynie to na zachowanie aplikacji, aplikacje muszą użyć nowej flagi kolumny DB, aby określić rzeczywisty typ serwera.

ODBC definiuje również typ o precyzji do 1 nanosekundy. Jednak ten typ jest już używany przez istniejące aplikacje SQL Server i takie aplikacje oczekują jedynie 3 milisekundowej precyzji. Nowy typ datetime2(3) nie jest bezpośrednio zgodny z istniejącym typem datetime . DateTime2(3) ma precyzję jednej milisekundy, a DateTime 1/300 sekundy. W ODBC aplikacje mogą określić, który typ serwera jest używany za pomocą pola deskryptorowego SQL_DESC_TYPE_NAME. Dlatego istniejący typ SQL_TYPE_TIMESTAMP (SQL_TIMESTAMP dla aplikacji ODBC 2.0) może być używany dla obu typów.

Używaj czasu datowego z rozszerzoną precyzją ułamkowych sekund i strefą czasową

Niektóre aplikacje wymagają wartości daty-czasu wraz z informacją o strefach czasowych. Wspierają to nowe typy DBTYPE_DBTIMESTAMPOFFSET (OLE DB) i SQL_SS_TIMESTAMPOFFSET (ODBC).

Użyj danych Date/Time/Datetime/Datetimeoffset z Client-Side konwersjami zgodnymi z istniejącymi konwersjami

Standard ODBC opisuje, jak działają konwersje między istniejącymi typami dat, godziny i znaczników czasu. Są one rozszerzane w sposób spójny, aby obejmować konwersje między wszystkimi typami daty i godziny wprowadzonymi w SQL Server 2008 (10.0.x).