Udostępnij przez


Konwersje wykonanej z klient do serwera

W tym temacie opisano datę / czas zestawami między napisane z aplikacji klienckiej SQL Server Macierzysta klient OLE DB i SQL Server 2008 (lub nowsze).

Podczas konwersji

W tym temacie opisano konwersje dokonane na komputerze klienckim.Jeśli klient określa dokładność ułamków sekund dla parametru, która różni się od zdefiniowanego na serwerze, konwersji klienta może spowodować awarię w przypadkach, gdy serwer pozwoliłoby operacja powiodła się.W szczególności klient traktuje wszystkie obcinania ułamków sekund jako błąd, należy SQL Server Zaokrągla czas do najbliższej całkowitej drugie.

Jeśli ICommandWithParameters::SetParameterInfo nie jest wywoływana, DBTYPE_DBTIMESTAMP powiązania są konwertowane tak, jakby były one datetime2.

->

Z

DBDATE (Data)

DBTIME (czas)

DBTIME2 (czas)

DBTIMESTAMP (smalldatetime)

DBTIMESTAMP (datetime)

DBTIMESTAMP (datetime2)

DBTIMESTAMPOFFSET (datetimeoffset)

STR

WSTR

SQLVARIANT

(sql_variant)

DATA

1,2

1,3,4

4,12

1,12

1,12

1,12

1,5, 12

1,12

1,12

1,12

datetime2(0)

DBDATE

1

-

-

1,6

1,6

1,6

1,5, 6

1,10

1,10

1

data

DBTIME

-

1

1

1,7

1,7

1,7

1,5, 7

1,10

1,10

1

czas(0)

DBTIME2

-

1,3

1

1,7,10,14

1,7,10,15

1,7,10

1,5,7,10

1,10,11

1,10,11

1

czas(7)

DBTIMESTAMP

1,2

1,3,4

1,4,10

1,10,14

1,10,15

1,10

1,5,10

1,10,11

1,10,11

1,10

datetime2(7)

DBTIMESTAMPOFFSET

1,2,8

1,3,4,8

1,4,8,10

1,8,10,14

1,8,10,15

1,8,10

1,10

1,10,11

1,10,11

1,10

datetimeoffset(7)

FILETIME

1,2

1,3,4

1,4,13

1,13

1,13

1,13

1,5,13

1,13

1,10

1,13

datetime2(3)

BAJTÓW

-

-

-

-

-

-

-

NIE DOTYCZY

NIE DOTYCZY

NIE DOTYCZY

WARIANT

1

1

1

1,10

1,10

1,10

1,10

NIE DOTYCZY

NIE DOTYCZY

1,10

SSVARIANT

1,16

1,16

1,16

1,10,16

1,10,16

1,10,16

1,10,16

NIE DOTYCZY

NIE DOTYCZY

1,16

BSTR

1,9

1,9

1,9,10

1,9,10

1,9,10

1,9,10

1,9,10

NIE DOTYCZY

NIE DOTYCZY

NIE DOTYCZY

STR

1,9

1,9

1,9,10

1,9,10

1,9,10

1,9,10

1,9,10

NIE DOTYCZY

NIE DOTYCZY

NIE DOTYCZY

WSTR

1,9

1,9

1,9,10

1,9,10

1,9,10

1,9,10

1,9,10

NIE DOTYCZY

NIE DOTYCZY

NIE DOTYCZY

Klucz do symboli

Symbol

Znaczenie

-

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.

NIE DOTYCZY

Nie dotyczy.

1

Dostarczone dane nie jest prawidłowy, DBSTATUS_E_CANTCONVERTVALUE jest zestaw.Dane wejściowe jest sprawdzana przed zastosowaniem konwersji, tak nawet wtedy, gdy składnik zostanie zignorowany przez kolejne konwersji nadal należy ważne dla konwersja powiodła się.

2

Pola czas są ignorowane.

3

Ułamków sekund musi mieć wartość zero lub jest DBSTATUS_E_DATAOVERFLOW zestaw.

4

Składnik data jest ignorowana.

5

The timezone jest zestaw do klient timezone zestaw ting.

6

Czas jest zestaw na zero.

7

Data jest zestaw do bieżącej daty.

8

Czas UTC jest konwertowana.Jeżeli błąd wystąpi podczas tej konwersji, jest DBSTATUS_E_CANTCONVERTVALUE zestaw.

9

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.

Jeśli typ miejsce docelowe jest DBczasSTAMP, smalldatetime, datetime, lub datetime2, ciąg musi być zgodna ze składni dla data, czas, lub datetime2 Literały lub składnią programu OLE. Jeśli ciąg jest literałem data, są wszystkie składniki czas zestaw na zero.Jeśli ciąg jest godziną literału, data jest zestaw do bieżącej daty.

Dla wszystkich innych typów miejsce docelowe ciąg musi być zgodny z składnia literały typ miejsce docelowe.

10

Jeśli nastąpi obcięcie ułamków sekund przy utracie danych, DBSTATUS_E_DATAOVERFLOW jest ustawiona.Dla konwersji ciągu sprawdzania przepełnienia jest możliwe tylko wtedy, gdy ciąg jest zgodny ze składnią ISO.Jeśli ciągiem będzie ono literałem data OLE, ułamków sekund są zaokrąglane.

11

Liczba cyfr, drugi ułamkowe (skala) zależy od rozmiaru kolumna docelowej, zgodnie z następującą tabelą.W przypadku rozmiarów kolumn większy od zakres w tabela jest implikowane skali od 9.Ta konwersja powinna uwzględniać do dziewięciu ułamkowe cyfr drugiego, maksymalną dozwoloną przez OLE DB.

Jednak jeżeli typem urządzenie źródłowe jest DBTIMESTAMP ułamków sekund jest równa zero, nie ułamkowe drugiej cyfry lub przecinka dziesiętnego są generowane.To zachowanie Wstecz zapewnia zgodność aplikacji utworzonych przy użyciu starszych dostawców OLE DB.

Rozmiar kolumna ~ 0 oznacza nieograniczony rozmiar DB OLE (cyfry 9, o ile ma zastosowanie reguła 3-cyfrowy DBTIMESTAMP).

TypDługość (w znaki)Skala
DBTIME28, 10..180,1..9
DBTIMESTAMP19, 21..290,1..9
DBTIMESTAMPOFFSET26, 28..360,1..9

12

Konwersja semantyka przed SQL Server 2008 dla DBTYPE_DATE są obsługiwane. Ułamków sekund są obcinane do zera.

13

Konwersja semantyka przed SQL Server 2008 dla DBTYPE_FILETIME są obsługiwane. Jeśli używasz systemu Windows FileTimeToSystemTime Interfejs API, dokładność ułamków sekund jest ograniczona do 1 milisekundy.

14

Konwersja semantyka przed SQL Server 2008 dla smalldatetime są zachowywane. Sekund są zestaw na zero.

15

Konwersja semantyka przed SQL Server 2008 dla datetime są zachowywane. Sekund są zaokrąglane do najbliższej 300th sekundy.

16

Zachowanie konwersji wartości (o danym typie) osadzonych w strukturze klient do SSVARIANT jest taka sama, jak zachowanie tej samej wartości i typu nie są osadzone w strukturze klient do SSVARIANT.