Istnieje wiele formatów obsługiwanych przez program SQL Server — zobacz MSDN Books Online na CAST i CONVERT
. 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 (nieznacznie dostosowanego) 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 (ale mogą należy pominąć) i stałeTjako ogranicznik między częścią daty i godziny wDATETIME.
Dotyczy to SQL Server 2000 i nowszych.
Jeśli używasz SQL Server 2008 lub nowszego 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.
Rekomendacją dla SQL Server 2008 i nowszych jest użycie DATE jeśli potrzebujesz tylko części daty i DATETIME2(n) kiedy potrzebujesz zarówno daty, jak i godziny. Powinieneś spróbować wycofywać DATETIME typ danych, jeśli to możliwe