Det finns många format som stöds av SQL Server - se MSDN Books Online på CAST
och CONVERT
. De flesta av dessa format är beroende på vilka inställningar du har - därför kan dessa inställningar fungera ibland - och ibland inte.
Sättet att lösa detta är att använda det (något anpassade) ISO-8601 datumformatet som stöds av SQL Server - det här formatet fungerar alltid - oavsett dina inställningar för SQL Server-språk och datumformat.
ISO-8601-formatet stöds av SQL Server finns i två varianter:
YYYYMMDD
för bara datum (ingen tidsdel); notera här:inga bindestreck! , det är väldigt viktigt!YYYY-MM-DD
är INTE oberoende av datumformatinställningarna i din SQL Server och kommer INTE fungera i alla situationer!
eller:
YYYY-MM-DDTHH:MM:SS
för datum och tider - notera här:detta format har bindestreck (men de kan utelämnas), och en fastT
som avgränsare mellan datum- och tidsdelen av dinDATETIME
.
Detta gäller för SQL Server 2000 och senare.
Om du använder SQL Server 2008 eller senare och DATE
datatyp (endast DATE
- inte DATETIME
!), då kan du verkligen också använda YYYY-MM-DD
format och det fungerar också med alla inställningar i din SQL Server.
Fråga mig inte varför hela det här ämnet är så knepigt och lite förvirrande – det är bara så det är. Men med YYYYMMDD
format, bör du vara bra för alla versioner av SQL Server och för alla språk- och datumformatinställningar i din SQL Server.
Rekommendationen för SQL Server 2008 och nyare är att använda DATE
om du bara behöver datumdelen och DATETIME2(n)
när du behöver både datum och tid. Du bör försöka börja fasa ut DATETIME
datatyp om möjligt