sql >> Databasteknik >  >> RDS >> Sqlserver

Vilka inställningar ger SQL Servers standardformat för datum och tid?

Gör inte det! Använd inte strängar istället för datum och använd inte ett kulturspecifikt datum- eller datumformat, det är ett recept på katastrof.

SQL Server har inget "datumformat", bara format som den använder för att konvertera datum till och från strängar. En av dem är standard, kontrollerad av serverns sortering. Du kan varken anta eller bör vara beroende av en specifik sortering, så du bör undvika konverteringar när det är möjligt. Att skicka ett strängvärde kan dessutom hindra SQL Server från att använda index på datumkolumner eftersom den skulle behöva konvertera strängen till den underliggande kolumntypen.

Det är mycket enklare och säkrare att skicka datum som datumtypade variabler eller parametrar. Du slipper hela konverteringsröran på detta sätt, till och från och undviker SQL-injektionsattacker.

Det finns ingen anledning att skicka strängar istället för datum till servern. Alla SQL Server-klienter (inklusive ADO.NET) låter dig köra parametriserade frågor. ORM:er som NHibernate och Entity Framework genererar också parametriserade frågor för datumtypade kolumner.

När du behöver skapa en bokstavlig sträng, använd ett av de invarianta formaten som 20140913 eller 2012-11-07T18:26:20

Du kan läsa mer om det på Writing International T-SQL Statements



  1. Python-Sqlalchemy binär kolumn Typ HEX() och UNHEX()

  2. Hur du skyddar din MySQL- eller MariaDB-databas från SQL-injektion:Del två

  3. Ange klassväg för maven

  4. Hur frågar man enkelt och effektivt efter kapslade relationer i SQL?