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:
YYYYMMDD
tylko dla dat (bez części czasu); uwaga tutaj:bez myślników! , to bardzo ważne!YYYY-MM-DD
jest NIE niezależnie od ustawień formatu daty na serwerze SQL Server i NIE pracuj we wszystkich sytuacjach!
lub:
YYYY-MM-DDTHH:MM:SS
dla dat i godzin – uwaga tutaj:ten format ma myślniki (ale mogą należy pominąć) i stałeT
jako 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