Datum och tid för SQL Server Native Client Datum och Tid

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Important

SQL Server Native Client (SNAC) levereras inte med:

  • SQL Server 2022 (16.x) och senare versioner
  • SQL Server Management Studio 19 och senare versioner

SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.

Använd någon av följande drivrutiner för nya projekt:

För SQLNCLI som levereras som en komponent i SQL Server-databasmotorn (versioner 2012 till och med 2019), se det här Support Lifecycle-undantag.

Detta ämne beskriver SQL Server Native Client-stödet för datum- och tidsdatatyper som lades till i SQL Server 2008 (10.0.x).

För mer information om datum-/tidförbättringar, se Datum och Tid Förbättringar (OLE DB) och Datum och Tid Förbättringar (ODBC).

Usage

Följande avsnitt beskriver olika sätt att använda de nya datum- och tidtyperna.

Använd Datum som en separat datatyp

Från och med SQL Server 2008 (10.0.x) gör förbättrat stöd för datum-/tidstyper det mer effektivt att använda SQL_TYPE_DATE ODBC-typen (SQL_DATE för ODBC 2.0-applikationer) och DBTYPE_DBDATE OLE DB-typen.

Använd tid som en distinkt datatyp

OLE DB har redan en datatyp som bara innehåller tiden, DBTYPE_DBTIME, med en precision på 1 sekund. I ODBC är motsvarande typ SQL_TYPE_TIME (SQL_TIME för ODBC 2.0-applikationer).

Den nya tidsdatatypen SQL Server har bråkdelar av sekunder med noggrannhet upp till 100 nanosekunder. Detta kräver nya typer i SQL Server Native Client: DBTYPE_DBTIME2 (OLE DB) och SQL_SS_TIME2 (ODBC). Befintliga applikationer skrivna för att använda tider utan bråkdelar av sekunder kan använda time(0)-kolumner. Den befintliga OLE DB DBTYPE_TIME och ODBC SQL_TYPE_TIME typer och deras motsvarande strukturer bör fungera korrekt, såvida inte applikationerna förlitar sig på den typ som returneras i metadata.

Använd tid som en distinkt datatyp med utökad bråkdelssekundprecision

Vissa tillämpningar, såsom processstyrning och tillverkning, kräver förmågan att hantera tidsdata med en precision på upp till 100 nanosekunder. Nya typer för detta ändamål är DBTYPE_DBTIME2 (OLE DB) och SQL_SS_TIME2 (ODBC).

Använd Datetime med utökad bråkdelssekundprecision

OLE DB definierar redan en typ med en precision på upp till 1 nanosekund. Denna typ används dock redan av befintliga SQL Server-applikationer och sådana applikationer förväntar sig endast 1/300 sekunds precision. Den nya datetime2(3)- typen är inte direkt kompatibel med den befintliga datetime-typen. Om det finns en risk att detta påverkar applikationsbeteendet måste applikationer använda en ny DBCOLUMN-flagga för att bestämma den faktiska servertypen.

ODBC definierar också en typ med en precision på upp till 1 nanosekund. Denna typ används dock redan av befintliga SQL Server-applikationer och sådana applikationer förväntar sig endast 3 millisekunders precision. Den nya datetime2(3)- typen är inte direkt kompatibel med den befintliga datetime-typen . Datetime2(3) har en precision på en millisekund, och Datetime har en precision på 1/300 sekund. I ODBC kan applikationer avgöra vilken servertyp som används med deskriptorfältet SQL_DESC_TYPE_NAME. Därför kan den befintliga typen SQL_TYPE_TIMESTAMP (SQL_TIMESTAMP för ODBC 2.0-applikationer) användas för båda typerna.

Använd Datetime med utökad bråkdelssekundprecision och tidszon

Vissa applikationer kräver datumtidsvärden med tidszonsinformation. Detta stöds av de nya DBTYPE_DBTIMESTAMPOFFSET (OLE DB) och SQL_SS_TIMESTAMPOFFSET (ODBC)-typerna.

Använd datum/tid/datum/datum-/datumtidsoffset-data med Client-Side konverteringar som är förenliga med befintliga konverteringar

ODBC-standarden beskriver hur konverteringar mellan befintliga datum-, tids- och tidsstämpeltyper fungerar. Dessa utökas på ett konsekvent sätt för att inkludera konverteringar mellan alla datum- och tidstyper som introducerades i SQL Server 2008 (10.0.x).