SQL Server podporuje mnoho formátů – viz MSDN Books Online na CAST a CONVERT
. Většina těchto formátů je závislá podle toho, jaká nastavení máte – proto mohou tato nastavení někdy fungovat – a někdy ne.
Způsob, jak to vyřešit, je použít (mírně upravený) formát data ISO-8601 který je podporován SQL Serverem – tento formát funguje vždy - bez ohledu na váš jazyk SQL Server a nastavení formátu data.
formát ISO-8601 je podporován SQL Serverem a je dodáván ve dvou variantách:
YYYYMMDDpouze pro data (žádná časová část); poznámka zde:bez pomlček! , to je velmi důležité!YYYY-MM-DDje NE nezávisle na nastavení formátu data na vašem serveru SQL a NE pracovat ve všech situacích!
nebo:
YYYY-MM-DDTHH:MM:SSpro data a časy – poznámka zde:tento formát má pomlčky (ale mohou být vynechán) a pevnéTjako oddělovač mezi částí data a časuDATETIME.
To platí pro SQL Server 2000 a novější.
Pokud používáte SQL Server 2008 nebo novější a DATE datový typ (pouze DATE - ne DATETIME !), pak můžete skutečně použít také YYYY-MM-DD formát a to bude fungovat také s jakýmkoli nastavením na vašem serveru SQL.
Neptejte se mě, proč je celé toto téma tak ošemetné a poněkud matoucí – tak to prostě je. Ale s YYYYMMDD formátu, měli byste být v pořádku pro jakoukoli verzi SQL Server a pro jakékoli nastavení jazyka a formátu data na vašem SQL Serveru.
Doporučení pro SQL Server 2008 a novější je použít DATE pokud potřebujete pouze část data, a DATETIME2(n) když potřebujete datum i čas. Měli byste se pokusit začít postupně vyřazovat DATETIME datový typ, pokud je to možné