Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie porównujące daty w SQL

Zamiast „2013-04-12”, którego znaczenie zależy od lokalnej kultury, użyj „20130412”, który jest rozpoznawany jako format niezmienny w kulturze.

Jeśli chcesz porównać z 4 grudnia, powinieneś napisać „20131204”. Jeśli chcesz porównać z 12 kwietnia, powinieneś napisać „20130412”.

Artykuł Write International Transact-SQL Statements z dokumentacji SQL Server wyjaśnia, jak pisać instrukcje, które są niezmienne kulturowo:

Aplikacje korzystające z innych interfejsów API lub skryptów Transact-SQL, procedur składowanych i wyzwalaczy powinny używać nierozdzielonych ciągów liczbowych. Na przykład rrrrmmdd jako 19980924.

EDYTUJ

Ponieważ używasz ADO, najlepszą opcją jest sparametryzowanie zapytania i przekazanie wartości daty jako parametru daty. W ten sposób całkowicie unikniesz problemu z formatem i uzyskasz korzyści związane z wydajnością zapytań parametrycznych.

AKTUALIZUJ

Aby użyć formatu ISO 8601 w literale, wszystkie elementy muszą być określone. Cytując z sekcji ISO 8601 dokumentacji datetime

Aby użyć formatu ISO 8601, należy określić każdy element formatu. Obejmuje to również T, dwukropki (:) i kropkę (.), które są wyświetlane w formacie.

... ułamek drugiego składnika jest opcjonalny. Składnik czasu jest określony w formacie 24-godzinnym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klucz obcy do klucza złożonego

  2. SQL Server SP — parametr przekazania dla listy tablicy IN?

  3. Czy posiadanie „LUB” w warunku INNER JOIN to zły pomysł?

  4. Jaki jest najdłuższy możliwy numer telefonu na świecie, który powinienem wziąć pod uwagę w SQL varchar (długość) dla telefonu?

  5. order by newid() - jak to działa?