sql >> Database teknologi >  >> RDS >> Sqlserver

Hvilke indstillinger giver SQL Server standard datotidsformat?

Gør det ikke! Brug ikke strenge i stedet for datoer, og brug ikke et kulturspecifikt dato- eller datotidsformat, det er en opskrift på katastrofe.

SQL Server har ikke et "datoformat", kun formater den bruger til at konvertere datoer til og fra strenge. En af dem er standarden, styret af serverens sortering. Du kan hverken antage eller bør stole på en specifik kollation, så du bør undgå konverteringer, når det er muligt. Desuden kan overføring af en strengværdi forhindre SQL Server i at bruge indekser på datokolonner, fordi den ville skulle konvertere strengen til den underliggende kolonnetype.

Det er langt nemmere og sikrere at sende datoer som dato-type variabler eller parametre. Du undgår hele konverteringsrodet på denne måde, til og fra og undgår SQL-injektionsangreb.

Der er ingen grund til at sende strenge i stedet for datoer til serveren. Alle SQL Server-klienter (inklusive ADO.NET) giver dig mulighed for at udføre parametriserede forespørgsler. ORM'er som NHibernate og Entity Framework genererer også parametriserede forespørgsler til datotypede kolonner.

Når du har brug for at oprette en streng literal, skal du bruge et af de invariante formater som 20140913 eller 2012-11-07T18:26:20

Du kan læse mere om det på Writing International T-SQL Statements



  1. Sådan indstilles bool-værdi i SQL

  2. Indsæt datoformat i dd/mm/åååå gennem laravel Eloquent Model

  3. BEGYND...SLUT vs. START TRANSAKTION... FORPLIGT

  4. mysql-oversættelsestabeller med manglende sprogtilbagegang