Konwersje wykonywane z serwera do klienta
W tym temacie opisano data /czas konwersje wykonywane między SQL Server 2008 (lub nowszym) i aplikacji klient napisanych z SQL Server Macierzystego klient OLE DB.
Konwersje
W poniższej tabela opisano konwersje między typu zwracane do klient i w powiązanie.Dla parametrów wyjściowych Jeśli ICommandWithParameters::SetParameterInfo została wywołana i typ określony w pwszDataSourceType pasuje nie rzeczywisty typ na serwerze niejawna konwersja będzie wykonywane przez serwer, a typ zwracany do klient będzie zgodny z typem określonym przez ICommandWithParameters::SetParameterInfo.Może to prowadzić do konwersji nieoczekiwane wyniki reguły konwersji serwera są inne niż opisane w tym temacie.Na przykład, kiedy domyślnej data należy dostarczyć, SQL Server używa 1900-1-1 zamiast 1899-12-30.
-> Z |
DATA |
DBDATE |
DBTIME |
DBTIME2 |
ODCISK CZASOWY |
DBTIMESTAMPOFFSET |
FILETIME |
BAJTÓW |
WARIANT |
SSVARIANT |
BSTR |
STR |
WSTR |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Data |
1,7 |
OK |
- |
- |
1 |
1,3 |
1,7 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Godzina |
5,6,7 |
- |
9 |
OK |
6 |
3,6 |
5,6 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Smalldatetime |
7 |
8 |
9,10 |
10 |
OK |
3 |
7 |
- |
7 (VT_DATE) |
OK |
OK |
4 |
4 |
Datetime |
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 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Datetimeoffset |
5,7,11 |
8,11 |
9,10,11 |
10,11 |
7,11 |
OK |
5,7,11 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
CHAR, Varchar, Nchar, Nvarchar |
7, 13 |
12 |
12,9 |
12 |
12 |
12 |
7,13 |
Brak |
Brak |
Brak |
Brak |
Brak |
Brak |
Sql_variant (datetime) |
7 |
8 |
9,10 |
10 |
OK |
3 |
7 |
- |
7 (VT_DATE) |
OK |
OK |
4 |
4 |
Sql_variant (smalldatetime) |
7 |
8 |
9,10 |
10 |
OK |
3 |
7 |
- |
7 (VT_DATE) |
OK |
OK |
4 |
4 |
Sql_variant (Data) |
1,7 |
OK |
2 |
2 |
1 |
1,3 |
1,7 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Sql_variant (czas) |
5,6,7 |
2 |
6 |
OK |
6 |
3,6 |
5,6 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Sql_variant (datetime2) |
5,7 |
8 |
9,10 |
10 |
OK |
3 |
5,7 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Sql_variant (datetimeoffset) |
5,7,11 |
8,11 |
9,10,11 |
10,11 |
7,11 |
OK |
5,7,11 |
- |
OK (VT_BSTR) |
OK |
OK |
4 |
4 |
Klucz do symboli
Symbol |
Znaczenie |
---|---|
OK |
Konwersja nie jest konieczne. |
- |
Konwersja nie jest obsługiwane.Jeśli powiązanie jest sprawdzana podczas IAccessor::CreateAccessor jest wywoływana, DBBINDSTATUS_UPSUPPORTEDCONVERSION jest zwracany w rgStatus.Sprawdzenie metoda dostępua jest odroczona, DBSTATUS_E_BADACCESSOR jest zestaw. |
1 |
czas Pól są ustawiane na zero. |
2 |
DBSTATUS_E_CANTCONVERTVALUE jest zestaw. |
3 |
Strefa czasowa jest zestaw do zera. |
4 |
Jeśli bufor klient nie jest wystarczająco duży, DBSTATUS_S_TRUNCATED jest zestaw.Typ serwera zawiera ułamków sekund, liczba cyfr w ciąg wynik dokładnie odpowiada skali typ serwera. |
5 |
Obcięcie sekund lub ułamków sekund jest ignorowana. |
6 |
Data jest zestaw do daty bieżącej, chyba, że źródło jest czas ciąg literału i miejsce docelowe jest DBTYPE_DATE.W takim przypadek 1899-12-30 jest używany. |
7 |
Jeśli wartość przepełnienie, DBSTATUS_E_DATAOVERFLOW jest zestaw. |
8 |
Pola czasu są ignorowane. |
9 |
Pola ułamków sekund są ignorowane. |
10 |
Składnik data jest ignorowana. |
11 |
Czas jest konwertowany na strefa czasowa klient.Jeśli wystąpi błąd podczas konwersji tego zestaw DBSTATUS_E_DATAOVERFLOW. |
12 |
Ciąg jest analizowana jako literał ISO i konwertowana na typ miejsce docelowe.Jeśli to się nie powiedzie, ciąg jest analizowany jako literałem data OLE (także czas składników) i konwertowane z data OLE (DBTYPE_DATE) na typ miejsce docelowe.Ciąg musi być zgodna ze składni literały typ docelowy dozwolone w formacie ISO analizowania powiodła się.Dla OLE analizowania powiodła się ciąg musi być zgodna ze składnią przez mechanizm OLE.Jeśli nie można przeanalizować ciąg, DBSTATUS_E_CANTCONVERTVALUE jest zestaw.Jeśli poza zakresem wartości składowych, DBSTATUS_E_DATAOVERFLOW jest zestaw. |
13 |
Ciąg jest analizowana jako literał ISO i konwertowana na typ miejsce docelowe.Jeśli to się nie powiedzie, ciąg jest analizowany jako literałem data OLE (także czas składników) i konwertowane z data OLE (DBTYPE_DATE) na typ miejsce docelowe.Ciąg musi odpowiadać składnia literały datetime, chyba że obiekt obiekt docelowy jest DBTYPE_DATE lub DBTYPE_DBTIMESTAMP.Jeśli tak jest, albo dataczas lub czas literał jest dozwolone w formacie ISO analizowania powiodła się.Dla OLE analizowania powiodła się ciąg musi być zgodna ze składnią przez mechanizm OLE.Jeśli nie można przeanalizować ciąg, DBSTATUS_E_CANTCONVERTVALUE jest zestaw.Jeśli poza zakresem wartości składowych, DBSTATUS_E_DATAOVERFLOW jest zestaw. |