2012-01-11 15 views
5

Mam to pytanie od zarania mojej kariery programistycznej. Czy istnieje naprawdę neutralny kulturowo format datetime w serwerze sql, tak, że kiedykolwiek wysyłam ciąg zapytania od strony klienta do serwera bazy danych, na którym działa serwer sql 2008, mający inny systemowy format datetime, a jeśli zapytanie zawiera datę skonwertowaną na ciąg znaków, jaki format nie dałby mi błędu.Co to jest format daty neutralnej dla kultury SQL Server

+3

który byłby ISO –

+0

@Soham: Czy strefa czasowa (dla daty wysłania) również nie byłaby wymagana? – shahkalpesh

+0

@shahkalpesh - Tego właśnie chcę uniknąć. –

Odpowiedz

10

Polecam lekturę Tibor Karaszi: The ultimate guide to the datetime datatypes.

Jeśli wprowadzisz datę/czas w formacie nierozdzielonym lub ISO 8601, powinieneś być w porządku z każdą konfiguracją.

Unseparated = 'yyyymmdd hh:mm:ss' 
ISO 8601 = 'yyyy-mm-ddThh:mm:ss' 

Aktualizacja (z komentarzem):

Jeśli trzeba tylko wpisać datę (bez części czasu), następnie trzeba użyć formatu na 'YYYYMMDD', jak 'YYYY-MM-DD' nie będzie działać. Zobacz link do artykułu na przykład.

+3

Dla typów SQL Server i 'DATETIME' należy użyć albo' RRRRMMDD' (** bez kresek! ** jeśli potrzebujesz tylko DATE - bez czasu), albo formatu, o którym wspomniałeś ('rrrr-mm-ddThg: mm : ss') - obie prace. –

+0

Tak, wspomniałem jedno i drugie. Zazwyczaj wolę wersję "bez kresek". Jest bardziej zwięzły. – MicSim

+0

Niezupełnie - nie wspomniałeś o formacie, jeśli potrzebujesz tylko daty (bez czasu). W przeciwieństwie do tego, co można by sądzić, "RRRR-MM-DD" nie działałby ** NIE ** (podczas gdy 'RRRRMMDD') nie ... –

0

Można rozważyć zapisanie daty/godzin w formacie UNIX time.

Powiązane problemy