sql >> Database >  >> RDS >> Sqlserver

Onmogelijk om bepaalde datum/tijd-formaten op te slaan in SQL Server

SQL Server slaat geen DateTime op in elk tekenreeksformaat - het wordt opgeslagen als een numerieke waarde van 8 bytes.

De verschillende instellingen (taal, datumnotatie) beïnvloeden alleen hoe de DateTime wordt aan u getoond in SQL Server Management Studio - of hoe het wordt geparseerd wanneer u probeert een tekenreeks te converteren naar een DateTime .

Er worden veel formaten ondersteund door SQL Server - zie de MSDN Books Online on CAST en CONVERTEREN . 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 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.

Dit is geldig voor SQL Server 2000 en nieuwer.

Als u SQL Server 2008 en de DATE . gebruikt 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.



  1. Kan de gebruiker niet vinden '', omdat deze niet bestaat of je geen toestemming hebt

  2. Hoe te verklaren Plan als goed te beschouwen - Oracle 10G

  3. Waarom script retourneren Fout met deze code in php?

  4. SQL Server wordt niet weergegeven in Visual Studio