Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Detta ämne beskriver vad som returneras i fälten för implementeringsparameterbeskrivare (IPD) och implementeringsradbeskrivare (IRD) för datum- och tidsdatatyper.
Information som returneras i IPD-fält
Följande information returneras i IPD-fälten:
| Parametertyp | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
|---|---|---|---|---|---|---|
| SQL_DESC_CASE_SENSITIVE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
| SQL_DESC_DATETIME_INTERVAL_PRECISION | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
| SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_TYPE | SQL_TYPE_DATE | SQL_SS_TYPE_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_TYPE_NAME | date | time | smalldatetime i IRD, datetime2 i IPD | datumtid i IRD, datumtid2 i IPD | datetime2 | datetimeoffset |
| SQL_CA_SS_VARIANT_TYPE | SQL_C_TYPE_DATE | SQL_C_TYPE_BINARY | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_BINARY |
| SQL_CA_SS_VARIANT_SQL_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_CA_SS_SERVER_TYPE | N/A | N/A | SQL_SS_TYPE_SMALLDATETIME | SQL_SS_TYPE_DATETIME | SQL_SS_TYPE_DEFAULT | N/A |
Ibland finns det diskontinuiteter i värdeintervallen. Till exempel saknas 9 i 8,10..16. Detta beror på att en decimalpunkt läggs till när bråkprecisionen är större än noll.
datetime2 returneras som typnamn för smalldatetime och datetime eftersom drivrutinen använder detta som en gemensam typ för att överföra alla SQL_TYPE_TIMESTAMP värden till servern.
SQL_CA_SS_VARIANT_SQL_TYPE är ett nytt beskrivande fält. Detta fält lades till i IRD och IPD för att göra det möjligt för applikationer att specificera värdetypen associerad med sqlvariant (SQL_SSVARIANT) kolumner och parametrar
SQL_CA_SS_SERVER_TYPE är ett nytt IPD-enbart fält som gör det möjligt för applikationer att kontrollera hur värden för parametrar bundna när SQL_TYPE_TYPETIMESTAMP (eller som SQL_SS_VARIANT med en C-typ SQL_C_TYPE_TIMESTAMP) skickas till servern. Om SQL_DESC_CONCISE_TYPE är SQL_TYPE_TIMESTAMP (eller är SQL_SS_VARIANT och C-typen är SQL_C_TYPE_TIMESTAMP) när SQLExecute eller SQLExecDirect anropas, bestämmer värdet av SQL_CA_SS_SERVER_TYPE den tabellariska dataströmstypen (TDS) för parametervärdet, enligt följande:
| Värdet av SQL_CA_SS_SERVER_TYPE | Giltiga värden för SQL_DESC_PRECISION | Giltiga värden för SQL_DESC_LENGTH | TDS-typ |
|---|---|---|---|
| SQL_SS_TYPE_DEFAULT | 0..7 | 19, 21..27 | datetime2 |
| SQL_SS_TYPE_SMALLDATETIME | 0 | 19 | smalldatetime |
| SQL_SS_TYPE_DATETIME | 3 | 23 | datetime |
Standardinställningen för SQL_CA_SS_SERVER_TYPE är SQL_SS_TYPE_DEFAULT. Inställningarna för SQL_DESC_PRECISION och SQL_DESC_LENGTH valideras med inställningen SQL_CA_SS_SERVER_TYPE som beskrivs i tabellen ovan. Om denna validering misslyckas returneras SQL_ERROR och en diagnostisk post loggas med SQLState 07006 och meddelandet "Restricted data type attribute violation". Detta fel returneras också om SQL_CA_SS_SERVER_TYPE är satt till ett annat värde än SQL_SS_TYPE DEFAULT och DESC_CONCISE_TYPE inte är SQL_TYPE_TIMESTAMP. Dessa valideringar utförs när beskrivande konsistensvalidering sker, till exempel:
När SQL_DESC_DATA_PTR ändras.
Vid förberedelse- eller exekveringstider (när SQLExecute, SQLExecDirect, SQLSetPos eller SQLBulkOperations anropas).
När en applikation tvingar fram en icke-uppskjuten förberedelse genom att anropa SQLPrepare med deferred prepare inaktiverat, eller genom att anropa SQLNumResultCols, SQLDescribeCol eller SQLDescribeParam för en sats som är förberedd men inte exekverad.
När SQL_CA_SS_SERVER_TYPE sätts av ett anrop till SQLSetDescField måste dess värde vara SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME eller SQL_SS_TYPE_DATETIME. Om så inte är fallet returneras SQL_ERROR och en diagnostisk post loggas med SQLState HY092 och meddelandet "Invalid attribute/option identifier".
Attributet SQL_CA_SS_SERVER_TYPE kan användas av applikationer som är beroende av funktionalitet som stöds av datetime och smalldatetime, men inte datetime2. Till exempel kräver datetime2 användning av dateadd- och datediif-funktionerna , medan datetime och smalldatetime också tillåter aritmetiska operatorer. De flesta applikationer behöver inte använda denna egenskap och dess användning bör undvikas.
Information som återlämnas i IRD-fält
Följande information återges i IRD-fälten:
| Kolumntyp | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
|---|---|---|---|---|---|---|
| SQL_DESC_AUTO_UNIQUE_VALUE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CASE_SENSITIVE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
| SQL_DESC_DATETIME_INTERVAL_PRECISION | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_DISPLAY_SIZE | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 2 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_LITERAL_PREFIX | ' | ' | ' | ' | ' | ' |
| SQL_DESC_LITERAL_SUFFIX | ' | ' | ' | ' | ' | ' |
| SQL_DESC_LOCAL_TYPE_NAME | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
| SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
| SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE |
| SQL_DESC_TYPE | SQL_DATETIME | SQL_SS_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_TYPE_NAME | date | time | smalldatetime | datetime | datetime2 | datetimeoffset |
| SQL_DESC_UNSIGNED | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE |