Konwersje wykonanej z serwera do klient
W tym temacie opisano wykonywane między konwersji data i godziny SQL Server 2008 (lub nowsze) oraz z aplikacji klienckiej SQL Server Klient macierzystym OLE DB.
Podczas konwersji
W poniższej tabela opisano podczas konwersji między zwrócone do klient i typem w wiązaniu.Dla parametrów wyjściowych Jeżeli ICommandWithParameters::SetParameterInfo została wywołana i typ określony w pwszDataSourceType pasuje nie rzeczywisty typ na serwerze, niejawna konwersja zostanie przeprowadzona przez serwer i zwrócone do klient będzie zgodny z typem określonym przez ICommandWithParameters::SetParameterInfo. Może to prowadzić do konwersji nieoczekiwane wyniki, gdy reguły konwersji na serwerze są inne niż opisane w tym temacie.Na przykład, gdy domyślna data należy podać, SQL Server używa 1900-1-1, a nie 1899-12-30.
-> Z |
DATA |
DBDATE |
DBTIME |
DBTIME2 |
DBTIMESTAMP |
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 |
Data i godzina |
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 |
NIE DOTYCZY |
NIE DOTYCZY |
NIE DOTYCZY |
NIE DOTYCZY |
NIE DOTYCZY |
NIE DOTYCZY |
Sql_variant (Data/godzina) |
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ługiwana.Jeśli wiązanie jest sprawdzana podczas IAccessor::CreateAccessor jest wywoływana, DBBINDSTATUS_UPSUPPORTEDCONVERSION jest zwracany w rgStatus. Podczas sprawdzania poprawności metoda dostępu jest odroczona, jest DBSTATUS_E_BADACCESSOR zestaw. |
1 |
Pola czas są zestaw na zero. |
2 |
Jest DBSTATUS_E_CANTCONVERTVALUE zestaw. |
3 |
The timezone jest zestaw na zero. |
4 |
Jeśli bufor klient nie jest wystarczająco duży, jest DBSTATUS_S_TRUNCATED 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 urządzenie źródłowe jest literału ciąg czas i obiekt obiekt docelowy jest DBTYPE_DATE.W tym przypadek, używany jest 1899-12-30. |
7 |
Jeśli zachodzi wartości, jest DBSTATUS_E_DATAOVERFLOW zestaw. |
8 |
Pola czas są ignorowane. |
9 |
Pola ułamków sekund są ignorowane. |
10 |
Składnik data jest ignorowana. |
11 |
Czas jest konwertowany na timezone klient.W przypadku wystąpienia błędu podczas tej konwersji jest DBSTATUS_E_DATAOVERFLOW zestaw. |
12 |
Ciąg jest analizowany jako literał ISO i konwertowana na typ miejsce docelowe.Jeśli to się nie powiedzie, ciąg jest analizowany jako ono OLE data literał (który także ma składniki trybu) i jej konwersji od data OLE (DBTYPE_DATE) typ miejsce docelowe.Ciąg musi być zgodna ze składni literały typ miejsce docelowe, dozwolone w formacie ISO analizowania powiodła się.Dla mechanizmu OLE podczas analizowania zakończyły się powodzeniem ciąg musi być zgodna ze składnią programu OLE.Jeśli nie można przeanalizować ciąg znaków, jest DBSTATUS_E_CANTCONVERTVALUE zestaw.Jeśli poza zakresem wartości składnika, jest DBSTATUS_E_DATAOVERFLOW zestaw. |
13 |
Ciąg jest analizowany jako literał ISO i konwertowana na typ miejsce docelowe.Jeśli to się nie powiedzie, ciąg jest analizowany jako ono OLE data literał (który także ma składniki trybu) i jej konwersji od data OLE (DBTYPE_DATE) typ miejsce docelowe.Ciąg musi być zgodny z składnia literały daty/godziny, chyba, że obiekt obiekt docelowy znajduje się DBTYPE_DATE lub DBTYPE_DBTIMESTAMP.Jeśli tak jest, Data/Godzina lub literał czas jest dozwolona dla formatu ISO analizowania powiodła się.Dla mechanizmu OLE podczas analizowania zakończyły się powodzeniem ciąg musi być zgodna ze składnią programu OLE.Jeśli nie można przeanalizować ciąg znaków, jest DBSTATUS_E_CANTCONVERTVALUE zestaw.Jeśli poza zakresem wartości składnika, jest DBSTATUS_E_DATAOVERFLOW zestaw. |