SQL Server nie przechowuje DateTime w dowolnym formacie ciągu - jest przechowywana jako 8-bajtowa wartość liczbowa.
Różne ustawienia (język, format daty) wpływają tylko na to, jak DateTime jest wyświetlany w SQL Server Management Studio — lub jak jest analizowany podczas próby konwersji ciągu na DateTime .
Istnieje wiele formatów obsługiwanych przez SQL Server — zobacz MSDN Books Online na CAST i KONWERSJA . Większość z tych formatów jest zależna jakie masz ustawienia — dlatego te ustawienia mogą czasami działać — a czasami nie.
Sposobem na rozwiązanie tego problemu jest użycie formatu daty ISO-8601 który jest obsługiwany przez SQL Server - ten format działa zawsze - niezależnie od ustawień języka SQL Server i formatu daty.
format ISO-8601 jest obsługiwany przez SQL Server jest dostępny w dwóch wersjach:
YYYYMMDDtylko dla dat (bez części czasu) – uwaga tutaj:bez myślników! , to bardzo ważne!YYYY-MM-DDjest NIE niezależnie od ustawień formatu daty na serwerze SQL Server i NIE pracuj we wszystkich sytuacjach!
lub:
YYYY-MM-DDTHH:MM:SSdla dat i godzin – uwaga tutaj:ten format ma myślniki.
Dotyczy to SQL Server 2000 i nowszych.
Jeśli używasz SQL Server 2008 i DATE typ danych (tylko DATE - nie DATETIME !), to rzeczywiście możesz również użyć YYYY-MM-DD format i będzie działać również z dowolnymi ustawieniami na serwerze SQL.
Nie pytaj mnie, dlaczego cały ten temat jest tak zawiły i nieco zagmatwany – tak po prostu jest. Ale z YYYYMMDD format, powinieneś być w porządku dla dowolnej wersji SQL Server oraz dla dowolnego języka i ustawienia formatu daty w twoim SQL Server.