Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
System Platform Analitycznych (PDW)
Baza danych SQL w Microsoft Fabric
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ż sterownik OLE DB dla SQL Server konwertuje między typami tylko wtedy, gdy dane są przesyłane do klienta lub z klienta, nie ma możliwości wymuszenia konwersji OLE DB Driver for SQL Server między formatami DBTYPE_DATE a stringami. 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
Uwaga / Notatka
Wcześniejsze wersje SQL Server Native Client i SQLOLEDB implementowały konwersje OLE na wypadek niepowodzenia konwersji standardowych. Sterownik OLE DB dla SQL Server zachowuje się podobnie jak SQL Server Native Client. W rezultacie niektóre konwersje wykonywane przez sterownik OLE DB dla SQL Server 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 daty i czasu wykonywane pomiędzy aplikacją kliencką napisaną za pomocą sterownika OLE DB Driver for SQL Server 2008 (10.0.x) a nowszymi wersjami.
Konwersje wykonywane z serwera na klienta
Opisuje konwersje dat/czas wykonywane pomiędzy SQL Server 2008 (10.0.x) a nowszymi wersjami oraz aplikacją kliencką napisaną za pomocą sterownika OLE DB dla SQL Server.