Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Dit onderwerp beschrijft wat wordt teruggegeven in de velden implementatieparameterdescriptor (IPD) en implementatierijdescriptor (IRD) voor datum- en tijdgegevenstypen.
Informatie teruggegeven in IPD-velden
De volgende informatie wordt teruggegeven in de IPD-velden:
| Parametertype | 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 in IRD, datetime2 in IPD | datumtijd in IRD, datumtijd2 in 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 |
Soms zijn er discontinuïteiten in waardebereik. Bijvoorbeeld, 9 ontbreekt in 8,10..16. Dit komt door de toevoeging van een decimaalteken wanneer breuknauwkeurigheid groter is dan nul.
Datetime2 wordt teruggegeven als typenaam voor smalldatetime en datetime omdat de driver dit als een gemeenschappelijk type gebruikt om alle SQL_TYPE_TIMESTAMP waarden naar de server te verzenden.
SQL_CA_SS_VARIANT_SQL_TYPE is een nieuw beschrijvend veld. Dit veld werd toegevoegd aan de IRD en IPD om applicaties in staat te stellen het waardetype te specificeren dat gekoppeld is aan sqlvariant (SQL_SSVARIANT) kolommen en parameters
SQL_CA_SS_SERVER_TYPE is een nieuw IPD-only veld waarmee applicaties kunnen bepalen hoe waarden voor parameters die gebonden zijn wanneer SQL_TYPE_TYPETIMESTAMP (of als SQL_SS_VARIANT met een C-type SQL_C_TYPE_TIMESTAMP) naar de server worden gestuurd. Als SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP is (of SQL_SS_VARIANT is en het C-type SQL_C_TYPE_TIMESTAMP is) wanneer SQLExecute of SQLExecDirect wordt aangeroepen, bepaalt de waarde van SQL_CA_SS_SERVER_TYPE het tabulaire datastroom (TDS) type van de parameterwaarde, als volgt:
| Waarde van SQL_CA_SS_SERVER_TYPE | Geldige waarden voor SQL_DESC_PRECISION | Geldige waarden voor SQL_DESC_LENGTH | TDS-type |
|---|---|---|---|
| SQL_SS_TYPE_DEFAULT | 0..7 | 19, 21..27 | datetime2 |
| SQL_SS_TYPE_SMALLDATETIME | 0 | 19 | smalldatetime |
| SQL_SS_TYPE_DATETIME | 3 | 23 | datetime |
De standaardinstelling van SQL_CA_SS_SERVER_TYPE is SQL_SS_TYPE_DEFAULT. De instellingen van SQL_DESC_PRECISION en SQL_DESC_LENGTH worden gevalideerd met de instelling van SQL_CA_SS_SERVER_TYPE zoals beschreven in de bovenstaande tabel. Als deze validatie faalt, wordt SQL_ERROR teruggegeven en wordt een diagnostisch record gelogd met SQLState 07006 en het bericht "Restricted data type attribute violation". Deze fout wordt ook teruggegeven als SQL_CA_SS_SERVER_TYPE is ingesteld op een andere waarde dan SQL_SS_TYPE DEFAULT en DESC_CONCISE_TYPE niet SQL_TYPE_TIMESTAMP. Deze validaties worden uitgevoerd wanneer descriptor-consistentievalidatie plaatsvindt, bijvoorbeeld:
Wanneer SQL_DESC_DATA_PTR verandert.
Tijdens de voorbereiding of uitvoering (wanneer SQLExecute, SQLExecDirect, SQLSetPos of SQLBulkOperations wordt aangeroepen).
Wanneer een applicatie een niet-uitgestelde voorbereiding afdwingt door SQLPrepare aan te roepen met uitgestelde voorbereiding uitgeschakeld, of door SQLNumResultCols, SQLDescribeCol of SQLDescribeParam aan te roepen voor een instructie die voorbereid maar niet wordt uitgevoerd.
Wanneer SQL_CA_SS_SERVER_TYPE wordt ingesteld door een aanroep naar SQLSetDescField, moet de waarde SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME of SQL_SS_TYPE_DATETIME zijn. Als dit niet het geval is, wordt SQL_ERROR geretourneerd en wordt een diagnostisch record gelogd met SQLState HY092 en het bericht "Invalid attribute/option identifier".
Het attribuut SQL_CA_SS_SERVER_TYPE kan worden gebruikt door applicaties die afhankelijk zijn van functionaliteit die wordt ondersteund door datetime en smalldatetime, maar niet datetime2. Bijvoorbeeld, datetime2 vereist het gebruik van de dateadd- en datediif-functies, terwijl datetime en smalldatetime ook rekenkundige operatoren toestaan. De meeste applicaties hoeven deze eigenschap niet te gebruiken en het gebruik ervan moet worden vermeden.
Informatie teruggegeven in IRD-velden
De volgende informatie wordt teruggegeven in de IRD-velden:
| Kolomsoort | 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 |