Er worden veel formaten ondersteund door SQL Server - zie de MSDN Books Online op CAST
en CONVERT
. De meeste van die indelingen zijn afhankelijk op welke instellingen je hebt - daarom kunnen deze instellingen soms werken - en soms niet.
De manier om dit op te lossen is door het (enigszins aangepaste) ISO-8601 datumformaat te gebruiken dat wordt ondersteund door SQL Server - dit formaat werkt altijd - ongeacht uw SQL Server-taal en datumnotatie-instellingen.
De ISO-8601-indeling wordt ondersteund door SQL Server komt in twee smaken:
YYYYMMDD
voor alleen data (geen tijdgedeelte); noteer hier:geen streepjes! , dat is heel belangrijk!YYYY-MM-DD
is NIET onafhankelijk van de datumnotatie-instellingen in uw SQL Server en zal NIET werk in alle situaties!
of:
YYYY-MM-DDTHH:MM:SS
voor datums en tijden - let hier op:dit formaat heeft streepjes (maar ze kunnen worden weggelaten), en een vasteT
als scheidingsteken tussen het datum- en tijdgedeelte van uwDATETIME
.
Dit is geldig voor SQL Server 2000 en nieuwer.
Als u SQL Server 2008 of nieuwer gebruikt en de DATE
datatype (alleen DATE
- niet DATETIME
!), dan kun je inderdaad ook de YYYY-MM-DD
. gebruiken formaat en dat zal ook werken met alle instellingen in uw SQL Server.
Vraag me niet waarom dit hele onderwerp zo lastig en enigszins verwarrend is - zo is het gewoon. Maar met de YYYYMMDD
formaat, zou het goed moeten zijn voor elke versie van SQL Server en voor elke taal- en datumindeling in uw SQL Server.
De aanbeveling voor SQL Server 2008 en nieuwer is het gebruik van DATE
als u alleen het datumgedeelte nodig heeft, en DATETIME2(n)
wanneer u zowel datum als tijd nodig heeft. Probeer de DATETIME
. uit te faseren datatype indien ooit mogelijk