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
Analysplattformssystem (PDW)
SQL-databas i Microsoft Fabric
Denna artikel beskriver datum/tid-konverteringar som utförts mellan SQL Server 2008 (10.0.x) och senare versioner, samt en klientapplikation skriven med OLE DB Driver för SQL Server.
Conversions
Följande tabell beskriver konverteringar mellan typen som returneras till klienten och typen i bindningen. För utdataparametrar, om ICommandWithParameters::SetParameterInfo har anropats och typen som anges i pwszDataSourceType inte matchar den faktiska typen på servern, kommer en implicit konvertering att utföras av servern, och typen som returneras till klienten kommer att matcha typen som anges via ICommandWithParameters::SetParameterInfo. Detta kan leda till oväntade konverteringsresultat när serverns konverteringsregler skiljer sig från de som beskrivs i denna artikel. Till exempel, när ett standarddatum måste anges, använder SQL Server 1900-1-1 istället för 1899-12-30.
| Till-> Från |
DATE | DBDATE | DBTIME | DBTIME2 | DBTIMESTAMP | DBTIMESTAMPOFFSET | FILTID | BYTE | VARIANT | SSVARIANT | BSTR | STR | WSTR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | 1, 7 | OK | - | - | 1 | 1, 3 | 1, 7 | - | Okej (VT_BSTR) | OK | OK | 4 | 4 |
| Time | 5, 6, 7 | - | 9 | OK | 6 | 3, 6 | 5, 6 | - | Okej (VT_BSTR) | OK | OK | 4 | 4 |
| Smalldatetime | 7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7 (VT_DATE) | OK | OK | 4 | 4 |
| Datum och tid | 5, 7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7 (VT_DATE) | OK | OK | 4 | 4 |
| Datetime2 | 5, 7 | 8 | 9, 10 | 10 | 7 | 3 | 5, 7 | - | Okej (VT_BSTR) | OK | OK | 4 | 4 |
| Datumtidsförskjutning | 5, 7, 11 | 8, 11 | 9, 10, 11 | 10, 11 | 7, 11 | OK | 5, 7, 11 | - | Okej (VT_BSTR) | OK | OK | 4 | 4 |
| Char, Varchar, Nchar, Nvarchar |
7, 13 | 12 | 12, 9 | 12 | 12 | 12 | 7, 13 | N/A | N/A | N/A | N/A | N/A | N/A |
| Sql_variant (datumtid) |
7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7(VT_DATE) | OK | OK | 4 | 4 |
| Sql_variant (smådatetime) |
7 | 8 | 9, 10 | 10 | OK | 3 | 7 | - | 7(VT_DATE) | OK | OK | 4 | 4 |
| Sql_variant (datum) |
1, 7 | OK | 2 | 2 | 1 | 1, 3 | 1, 7 | - | Okej(VT_BSTR) | OK | OK | 4 | 4 |
| Sql_variant (tid) |
5, 6, 7 | 2 | 6 | OK | 6 | 3, 6 | 5, 6 | - | Okej(VT_BSTR) | OK | OK | 4 | 4 |
| Sql_variant (datum2) |
5, 7 | 8 | 9, 10 | 10 | OK | 3 | 5, 7 | - | Okej(VT_BSTR) | OK | OK | 4 | 4 |
| Sql_variant (datumtidförskjutning) |
5, 7, 11 | 8, 11 | 9, 10, 11 | 10, 11 | 7, 11 | OK | 5, 7, 11 | - | Okej(VT_BSTR) | OK | OK | 4 | 4 |
Nyckel till symboler
| Symbol | Meaning |
|---|---|
| OK | Ingen konvertering är nödvändig. |
| - | Ingen konvertering stöds. Om bindningen valideras när IAccessor::CreateAccessor anropas, returneras DBBINDSTATUS_UPSUPPORTEDCONVERSION i rgStatus. När validering av accessorer skjuts upp sätts DBSTATUS_E_BADACCESSOR. |
| 1 | Tidsfälten är inställda på noll. |
| 2 | DBSTATUS_E_CANTCONVERTVALUE är klar. |
| 3 | Tidszonen är inställd på noll. |
| 4 | Om klientbufferten inte är tillräckligt stor är DBSTATUS_S_TRUNCATED satt. När servertypen inkluderar bråkdelar av sekunder motsvarar antalet siffror i resultatsträngen exakt servertypens skala. |
| 5 | Förkortning av sekunder eller bråkdelar av sekunder ignoreras. |
| 6 | Datumet sätts till det aktuella datumet, om inte källan är en strängtidsbokstav och destinationen är DBTYPE_DATE. I detta fall används 1899-12-30. |
| 7 | Om värdet flyter över är DBSTATUS_E_DATAOVERFLOW satt. |
| 8 | Tidsfält ignoreras. |
| 9 | Fält för bråkdelar av sekunder ignoreras. |
| 10 | Datumkomponenten ignoreras. |
| 11 | Tiden omvandlas till klientens tidszon. Om ett fel uppstår under denna omvandling sätts DBSTATUS_E_DATAOVERFLOW. |
| 12 | Strängen tolkas som en ISO-literal och konverteras till måltypen. Om detta misslyckas tolkas strängen som en OLE-datumbokstav (som också har tidskomponenter) och konverteras från ett OLE-datum (DBTYPE_DATE) till måltypen. Strängen måste följa syntaxen för literaler av måltypen som tillåts för att ISO-formatparsing ska lyckas. För att OLE-parsing ska lyckas måste strängen följa syntaxen som OLE känner igen. Om strängen inte kan tolkas är DBSTATUS_E_CANTCONVERTVALUE satt. Om några komponentvärden ligger utanför intervallet är DBSTATUS_E_DATAOVERFLOW satt. |
| 13 | Strängen tolkas som en ISO-literal och konverteras till måltypen. Om detta misslyckas tolkas strängen som en OLE-datumbokstav (som också har tidskomponenter) och konverteras från ett OLE-datum (DBTYPE_DATE) till måltypen. Strängen måste följa syntaxen för datetime-literaler, om inte destinationen är DBTYPE_DATE eller DBTYPE_DBTIMESTAMP. Om så är fallet tillåts antingen en datetime- eller tidsliteral för att ISO-formatparsing ska lyckas. För att OLE-parsing ska lyckas måste strängen följa syntaxen som OLE känner igen. Om strängen inte kan tolkas är DBSTATUS_E_CANTCONVERTVALUE satt. Om några komponentvärden ligger utanför intervallet är DBSTATUS_E_DATAOVERFLOW satt. |