sql >> Databasteknik >  >> RDS >> Sqlserver

Fråga jämföra datum i SQL

Istället för "2013-04-12" vars betydelse beror på den lokala kulturen, använd "20130412" som är erkänt som det kulturinvarianta formatet.

Om du vill jämföra med 4 december ska du skriva '20131204'. Om du vill jämföra med 12 april ska du skriva '20130412'.

Artikeln Write International Transact-SQL Statements från SQL Servers dokumentation förklarar hur man skriver satser som är kulturinvarianta:

Applikationer som använder andra API:er, eller Transact-SQL-skript, lagrade procedurer och utlösare, bör använda de osparerade numeriska strängarna. Till exempel, ååååmmdd som 19980924.

REDIGERA

Eftersom du använder ADO är det bästa alternativet att parametrisera frågan och skicka datumvärdet som en datumparameter. På så sätt undviker du formatproblemet helt och får prestandafördelarna med parametriserade frågor också.

UPPDATERA

För att använda ISO 8601-formatet i en bokstavlig, måste alla element anges. För att citera från ISO 8601-delen av datetimes dokumentation

För att använda ISO 8601-formatet måste du ange varje element i formatet. Detta inkluderar även T, kolon (:) och punkt (.) som visas i formatet.

... bråkdelen av den andra komponenten är valfri. Tidskomponenten anges i 24-timmarsformatet.



  1. SQL Tutorial:One Stop Solution för att lära sig SQL

  2. Konvertera från DateTime till INT

  3. PostgreSQL 9.1:Hur man sammanfogar rader i array utan dubbletter, GÅ MED i en annan tabell

  4. Provisioning MySQL/MariaDB Vault Database Secrets Engine med Terraform