sql >> Database >  >> RDS >> Sqlserver

Welke instellingen bieden de standaard datum/tijd-indeling van SQL Server?

Doe dat niet! Gebruik geen strings in plaats van datums en gebruik geen cultuurspecifieke datum- of datetime-notatie, het is een recept voor rampen.

SQL Server heeft geen "datumformaat", alleen formaten die het gebruikt om datums van en naar tekenreeksen te converteren. Een daarvan is de standaard, gecontroleerd door de sortering van de server. U kunt er niet van uitgaan en ook niet afhankelijk zijn van een specifieke sortering, dus u moet waar mogelijk conversies vermijden. Bovendien kan het doorgeven van een tekenreekswaarde voorkomen dat SQL Server indexen op datumkolommen gebruikt, omdat het de tekenreeks zou moeten converteren naar het onderliggende kolomtype.

Het is veel gemakkelijker en veiliger om datums door te geven als datumgetypte variabelen of parameters. U vermijdt op deze manier de hele conversie-puinhoop van en naar en vermijdt SQL-injectie-aanvallen.

Er is geen reden om strings in plaats van datums door te geven aan de server. Met alle SQL Server-clients (inclusief ADO.NET) kunt u geparameteriseerde query's uitvoeren. ORM's zoals NHibernate en Entity Framework genereren ook geparametriseerde query's voor kolommen met datumtype.

Wanneer je een letterlijke tekenreeks moet maken, gebruik dan een van de invariante formaten zoals 20140913 of 2012-11-07T18:26:20

U kunt er meer over lezen op Internationale T-SQL-verklaringen schrijven



  1. Installeer PostgreSQL op Ubuntu 20.04

  2. SELECTEER en vergrendel een rij en dan UPDATE

  3. Tijdstempels groeperen in MySQL met PHP

  4. SQL-datumnotatie:hoe u er op een slimme manier mee omgaat?