Czy jest jakaś różnica między DateTime w C# i DateTime w serwerze SQL?Czy jest jakaś różnica między DateTime w C# i DateTime w serwerze SQL?
Odpowiedz
Precyzja i zakres (tak, to wszystko ważne ;-P)
Od MSDN:
typu DateTime reprezentuje wartość daty i godziny z wartościami począwszy od godziny 12:00: 00 północ, 1 stycznia 0001 Anno Domini (Common Era) do 11:59:59 PM, 31 grudnia 9999 AD (CE)
Wartości czasu są mierzone w jednostkach 100-nanosekundowych kleszczy, a zwłaszcza data jest liczba kleszczy od 12:00 do północy, 1 stycznia 0001 AD (CE) w calenda kalendarz gregoriański
Zakres dat: od 1 stycznia 1753 roku do 31 grudnia 9999
Dokładność: Zaokrąglone do przyrostach .000, 0,003, lub .007 sekund
można również użyć datetime2 SQL Server 2008. pre Cision ma również 100ns. W rzeczywistości został wprowadzony w celu dopasowania do precyzji .NET DateTime.
Uwaga: jest to z domyślną dokładnością datetime2 (można ją zmniejszyć do drugiej precyzji). – user2864740
Tak.
C# odpowiednik typu SQL datetime jest SqlDateTime
więc zdefiniować połączenia SQL (przechowywane proca z kolekcji parametrów oczywiście) do korzystania SQLDateTime. Zaletą jest to, że można pułapkę jakiegokolwiek błędu przepełnienia lub poza zasięgiem, budując polecenie, a nie czas wykonania z silnika bazy danych.
doskonała! Chcę napisać funkcję w języku C#, która pobiera parametr typu string i konwertuje go na datetime. Chcę zapisać wartość zwracaną funkcji do DB. Funkcja powinna zająć się pustym łańcuchem iw tym przypadku powinna zwrócić wartość null. Ale nie można wstawić wartości null. Co jest nie tak? – odiseh
Prawdopodobnie wystarczy użyć DBNull.Value w kodzie .NET do reprezentowania wartości null bazy danych. –
Istnieje również aspekt strefy czasowej - mimo że DateTime nie ma powiązanej strefy czasowej, * może * wiedzieć, czy jest to "lokalny" czy UTC. –