2009-07-25 17 views

Odpowiedz

17

Precyzja i zakres (tak, to wszystko ważne ;-P)

Od MSDN:

.NET System.DateTime

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

Transact SQL datetime

Zakres dat: od 1 stycznia 1753 roku do 31 grudnia 9999

Dokładność: Zaokrąglone do przyrostach .000, 0,003, lub .007 sekund

+0

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

+0

Prawdopodobnie wystarczy użyć DBNull.Value w kodzie .NET do reprezentowania wartości null bazy danych. –

+1

Istnieje również aspekt strefy czasowej - mimo że DateTime nie ma powiązanej strefy czasowej, * może * wiedzieć, czy jest to "lokalny" czy UTC. –

11

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.

datetime2 (Transact-SQL)

+0

Uwaga: jest to z domyślną dokładnością datetime2 (można ją zmniejszyć do drugiej precyzji). – user2864740

6

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.

Powiązane problemy