Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Ta sekcja omawia, jak przeliczać wartości datetimetime i datetimeoffset . Konwersje opisane w tej sekcji są albo już udostępnione przez OLE DB, albo stanowią spójne rozszerzenie OLE DB.
Format literów i ciągów tekstów dla dat i godzin w OLE DB zazwyczaj podąża za ISO i nie zależy od lokalizacji klienta. Wyjątkiem jest DBTYPE_DATE, gdzie standardem jest OLE Automation. Jednak ponieważ SQL Server Natywny Klient konwertuje między typami tylko wtedy, gdy dane są przesyłane do lub z klienta, aplikacja nie ma możliwości wymuszenia konwersji SQL Server Natywnego Klienta do konwersji między formatami DBTYPE_DATE a ciągami tekstów. W przeciwnym razie łańcuchy używają następujących formatów (tekst w nawiasach oznacza element opcjonalny):
Format stringów datetime, datetime , offset jest następujący:
yyyy-Mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]
Format łańcuchów czasowych jest następujący:
hh:mm:ss[.9999999]
Format ciągów dat jest następujący:
yyyy-Mm-Dd
Note
Wcześniejsze wersje SQL Server Native Client i SQLOLEDB implementowały konwersje OLE na wypadek niepowodzenia konwersji standardowych. W rezultacie niektóre konwersje wykonywane przez SQL Server Native Client 10.0 i późniejsze różnią się od specyfikacji OLE DB.
Konwersje ze stringów pozwalają na elastyczność w zakresie przestrzeni białej i szerokości pola. Więcej informacji można znaleźć w sekcji "Data Formats: Strings and Literals" w sekcji Data Type Support for OLE DB Date and Time Improvements.
Poniżej przedstawiono ogólne zasady konwersji:
Gdy ciąg jest konwertowany na typ daty/godziny, najpierw jest on parsowany jako literal ISO. Jeśli to się nie powiedzie, ciąg jest analizowany jako literal daty OLE, który zawiera składowe czasowe.
Jeśli nie ma czasu, ale odbiorca może go przechowywać, czas jest ustawiony na zero. Jeśli nie ma daty, ale odbiorca może ją przechowywać, data jest ustalana na bieżącą datę, gdy stosuje się konwersje ISO, oraz na 1899-12-30, gdy stosuje się konwersje OLE.
Jeśli w typie danych używanym przez klienta nie ma strefy czasowej, ale serwer może przechowywać strefę czasową, dane na kliencie zakłada się jako należące do strefy czasowej klienta.
Jeśli na serwerze nie ma strefy czasowej, ale klient ma informacje o strefie czasowej, przyjmuje się strefę czasową UTC. Różni się to od zachowania serwera.
Jeśli czas jest obecny, ale odbiorca nie może go przechowywać, składowa czasu jest ignorowana.
Jeśli data jest obecna, ale odbiorca nie może jej przechowywać, komponent daty jest ignorowany.
Jeśli podczas konwersji z klienta na serwer następuje obcięcie sekund lub ułamków, zwraca się DB_E_ERRORSOCCURRED i ustawia DBSTATUS_E_DATAOVERFLOW statusu.
Jeśli podczas konwersji z serwera na klienta następuje obcięcie sekund lub ułamków, DBSTATUS_S_TRUNCATED jest ustawione
W tej Sekcji
Konwersje wykonywane z klienta na serwer
Opisuje konwersje dat/czas wykonywane pomiędzy aplikacją kliencką napisaną w bazie SQL Server Native Client OLE DB a SQL Server 2008 (10.0.x) (lub nowszym).
Konwersje wykonywane z serwera na klienta
Opisuje konwersje dat/godziny wykonywane pomiędzy SQL Server 2008 (10.0.x) (lub nowszym) a aplikacją kliencką napisaną w bazie SQL Server Native Client OLE DB.