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:
YYYYMMDD
pouze pro data (žádná časová část); poznámka zde:bez pomlček! , to je velmi důležité!YYYY-MM-DD
je 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:SS
pro data a časy – poznámka zde:tento formát má pomlčky (ale mohou být vynechán) a pevnéT
jako 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é