Udostępnij za pośrednictwem


Zbiorcza Kopiuj zmiany dla daty rozszerzony / czas typy (OLE DB i ODBC)

W tym temacie opisano datę / czas rozszerzeń do obsługi zbiorczego kopiowania funkcjonalności.Informacje zawarte w tym temacie jest prawidłowa dla OLE DB i ODBC w SQL Server Macierzysta klient.

Format plików

Podczas kompilowania plików w formacie interaktywnie, w następującej tabela podano dane wejściowe używane do określania daty / czas typów i odpowiadających im danych z pliku hostów wpisz nazwy.

Typ magazynu plików

Typ danych pliku hosta

Odpowiedzi na monit: "Wprowadź typ pliku magazynu polanazwa_pola < >domyślne< >: „

Data i godzina

SQLDATETIME

d

Smalldatetime

SQLDATETIM4

D

Data

SQLDATE

de

Godzina

SQLTIME

te

Datetime2

SQLDATETIME2

D2

Datetimeoffset

SQLDATETIMEOFFSET

czy

Format XML pliku XSD będą mieć następujące dodatki:

    <xs:complexType name="SQLDATETIME2">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="SQLDATETIMEOFFSET">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="SQLDATE">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="SQLTIME">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>

Pliki danych znaków

W plikach danych znak, Data i czas wartości są przedstawiane w sposób opisany w "formatów danych: Ciągi i literały"sekcjiObsługa typu danych dla ulepszenia ODBC Data/Godzina dla ODBC, lub Obsługa typu danych OLE DB Data/Godzina ulepszenia dla baz danych OLE.

Pliki danych macierzystym wartości data i godziny dla czterech nowych typów są reprezentowane jako ich reprezentacji TDS skalę 7 (ponieważ jest to obsługiwane przez maksimum SQL Server i skali kolumny te nie przechowują plików danych bcp). Nie ma zmian do magazynu z istniejącego pliku datetime i smalldatetime Typ lub ich danych tabelarycznych strumienia reprezentacje (TDS).

Rozmiary składowania dla przechowywania różnych typów są następujące for OLE DB:

Typ magazynu plików

Rozmiar w bajtach

data_i_godzina

8

Smalldatetime

4

data

3

godzina

6

datetime2

9

datetimeoffset

11

Rozmiary wynoszą dla ODBC.Należy zauważyć, że nie jest konieczne przechowywanie precyzji w plikach formatu lub danych, ponieważ BCP.exe będzie zawsze pobierać precyzji z serwera.

Typ magazynu plików

Rozmiar w bajtach

Format przechowywania

Data/Godzina (d)

8

TDS

Smalldatetime (D)

4

TDS

Data (de)

3

TDS

czas (te)

6

TDS

datetime2 (d2)

9

TDS

datetimeoffset (do)

11

TDS

Typy BCP w sqlncli.h

Następujące typy są definiowane w sqlncli.h ma być używany z rozszerzenia interfejsu API BCP z ODBC.Te typy są przekazywane z eUserDataType Parametr IBCPSession::BCPColFmt w OLE DB.

Typ magazynu plików

Typ danych pliku hosta

Wpisz w polu sqlncli.h do użytku z IBCPSession::BCPColFmt

Wartość

Data i godzina

SQLDATETIME

BCP_TYPE_SQLDATETIME

0x3d

Smalldatetime

SQLDATETIM4

BCP_TYPE_SQLDATETIME4

0x3a

Data

SQLDATE

BCP_TYPE_SQLDATE

0x28

Godzina

SQLTIME

BCP_TYPE_SQLTIME

0x29

Datetime2

SQLDATETIME2

BCP_TYPE_SQLDATETIME2

0x2A

Datetimeoffset

SQLDATETIMEOFFSET

BCP_TYPE_SQLDATETIMEOFFSET

0x2B

BPC Data Type Conversions.

Poniższe tabele zawierają informacje o konwersji.

OLE DB Note   The following conversions are performed by IBCPSession.IRowsetFastLoad uses OLE DB conversions as defined in Konwersje wykonanej z klient do serwera.Należy zauważyć, że wartości daty/godziny są zaokrąglane do 1/300th druga i smalldatetime wartości mają sekund zestaw do zera po przeprowadzeniu konwersji klient opisane poniżej.Zaokrąglenie data/godziny propaguje przy użyciu godzin i minut, ale nie data.

           Aby-->

Z

data

godzina

Smalldatetime

data_i_godzina

datetime2

datetimeoffset

Wskazuje inicjatora wątek.

WChar

Data

1

-

1,6

1,6

1,6

1,5,6

1,3

1,3

Godzina

NIE DOTYCZY

1,10

1,7,10

1,7,10

1,7,10

1,5,7,10

1,3

1,3

Smalldatetime

1,2

1,4,10

1

1

1,10

1,5,10

1,11

1,11

Data i godzina

1,2

1,4,10

1,12

1

1,10

1,5,10

1,11

1,11

Datetime2

1,2

1,4,10

1,10 (ODBC) 1,12 (OLE DB)

1,10

1,10

1,5,10

1,3

1,3

Datetimeoffset

1,2,8

1,4,8,10

1,8,10

1,8,10

1,8,10

1,10

1,3

1,3

CHAR/wchar (Data)

9

-

9,6 (ODBC) 9,6,12 (OLE DB)

9,6 (ODBC) 9,6,12 (OLE DB)

9,6

9,5,6

NIE DOTYCZY

NIE DOTYCZY

CHAR/wchar (czas)

-

9,10

9,7,10 (ODBC) 9,7,10,12 (OLE DB)

9,7,10 (ODBC) 9,7,10, 12 (OLE DB)

9,7,10

9,5,7,10

NIE DOTYCZY

NIE DOTYCZY

CHAR/wchar (datetime)

9,2

9,4,10

9, 10 (ODBC) 9,10,12 (OLE DB)

9, 10 (ODBC) 9,10,12 (OLE DB)

9,10

9,5,10

NIE DOTYCZY

NIE DOTYCZY

CHAR/wchar (datetimeoffset)

9,2,8

9,4,8,10

9,8,10 (ODBC) 9,8,10,12 (OLE DB)

9,8,10 (ODBC) 9,8,10,12 (OLE DB)

9,8,10

9,10

NIE DOTYCZY

NIE DOTYCZY

Klucz do symboli

Symbol

Znaczenie

-

Konwersja nie jest obsługiwana.

Rekord diagnostyczne ODBC jest generowany z SQLSTATE 07006 i komunikat "dane ograniczeniami typ atrybut".

1

Jeśli dostarczonych danych nie jest prawidłowy, generowany jest rekord diagnostyczne ODBC SQLSTATE 22007 i komunikat "format daty/godziny nieprawidłowe".W przypadku wartości datetimeoffset części czas musi mieścić się w zakres po konwersji na UTC, nawet jeśli wymagana jest konwersja nie do czasu UTC.Dzieje się tak, ponieważ TDS, a serwer zawsze znormalizować datetimeoffset wartości czas do czas UTC.Tak, aby klient musi sprawdzić tego czas składników znajdują się w obrębie zakres obsługiwane po konwersji do czas UTC.

2

Składnik godziny jest ignorowane.

3

Dla ODBC, jeśli nastąpi obcięcie z utratą danych, rekord diagnostyczne wygenerowany przy użyciu SQLSTATE 22001 i komunikat „ danych ciąg, „ obcięty, prawo to liczba cyfr ułamków sekund (skala) zależy od obiekt docelowy rozmiar kolumna zgodnie z następującą tabelą.W przypadku rozmiarów kolumn większy od zakres w tabela jest implikowane skali od 7.Ta konwersja powinna uwzględniać do dziewięciu ułamkowe cyfr drugiego, maksymalną dozwoloną przez ODBC.

TypSkala domyślna0Skala domyślna1..7
DBTIME2810,16
DBTIMESTAMP1921..27
DBTIMESTAMPOFFSET2628..34

W przypadku OLE DB, jeżeli nastąpi obcięcie z utratą danych, błąd jest księgowana.Dla datetime2 to liczba cyfr ułamków sekund (skala) zależy od rozmiaru kolumna docelowej zgodnie z następującą tabelą.Większy od zakres w tabela skali 9 rozmiarów kolumn jest implikowane.Ta konwersja powinna uwzględniać do dziewięciu ułamkowe cyfr drugiego, maksymalną dozwoloną przez OLE DB.

TypSkala domyślna0Skala domyślna1..9
DBTIME281..9
DBTIMESTAMP1921..29
DBTIMESTAMPOFFSET2628..36

4

Składnik data jest ignorowana.

5

The timezone jest zestaw do czasu UTC (na przykład, 00: 00).

6

Czas jest zestaw na zero.

7

Data jest zestaw 1900-01-01.

8

Przesunięcie timezone jest ignorowana.

9

Ciąg jest analizowany i przekonwertowana na datę, Data/Godzina, datetimeoffset lub wartość czas, w zależności od pierwszych znaków interpunkcyjnych napotkał i obecność pozostałe składniki.Ciąg jest następnie konwertowana na typ miejsce docelowe, przy czym stosuje reguły w tabela na końcu tego tematu, typu urządzenie źródłowe, odnalezione przez ten proces.Dostarczone dane nie było możliwe przeprowadzenie analizy składniowej bez błędu lub jakiejkolwiek części składnika znajduje się poza zakres dozwolone lub w przypadku bez konwersji z typu literał na typ miejsce docelowe, błąd zostanie zaksięgowana (OLE DB) lub rekord diagnostyczne ODBC jest generowany z SQLSTATE 22018 i komunikat "nieprawidłowy znak wartości dla specyfikacji rzutowania".Parametrów typu Data/Godzina i smalldatetime Jeśli rok jest poza zakresem obsługuje te typy, błąd zostanie zaksięgowana (OLE DB) lub rekord diagnostyczne ODBC jest generowany z SQLSATE 22007 i komunikat "format daty/godziny nieprawidłowe".

Dla datetimeoffset, wartość musi być w ramach zakres po konwersji na UTC, nawet jeśli wymagana jest konwersja nie do czasu UTC.Dzieje się tak, ponieważ TDS, a serwer zawsze znormalizować czas datetimeoffset wartości dla czas UTC, tak, aby klient musi zweryfikować tego czas składników znajdują się w zasięgu, obsługiwane po konwersji do czas UTC.Jeśli wartość nie jest obsługiwane zakres czasu UTC, błąd zostanie zaksięgowana (OLE DB) lub rekord diagnostyczne ODBC jest generowany z SQLSTATE 22007 i komunikat "format daty/godziny nieprawidłowe".

10

Do konwersji serwera na komputerze klienckim występuje obcinania przy utracie danych, błąd zostanie zaksięgowana (OLE DB) lub rekord diagnostyczne ODBC jest generowany z SQLSTATE 22008 i komunikat "Przepełnienie pole daty/godziny".Ten błąd występuje również, jeśli wartość mieści się w zakresie, który może być reprezentowany przez zakres czasu UTC, używany przez serwer.Jeśli wystąpi sekund lub obcinania ułamków sekund na serwerze z konwersją klient, to tylko ostrzeżenia.

11

Jeśli wystąpi obcinania przy utracie danych, generowana jest diagnostyczne rekordu.

W przypadku konwersji serwera do klient jest to ostrzeżenie (S1000 SQLSTATE ODBC).

Konwersja klient serwer to jest błąd (SQLSTATE 22001 ODBC).

12

Sekund są ustawiane na zero i ułamków sekund są odrzucane.Błąd obcinania nie jest możliwe.

NIE DOTYCZY

Istniejące SQL Server 2005 i starsze zachowanie jest obsługiwane.