sql >> Database >  >> RDS >> Sqlserver

Query vergelijken van datums in SQL

Gebruik in plaats van '2013-04-12' waarvan de betekenis afhangt van de lokale cultuur, '20130412', dat wordt erkend als het cultuurinvariante formaat.

Als je wilt vergelijken met 4 december, moet je '20131204' schrijven. Als je wilt vergelijken met 12 april, moet je '20130412' schrijven.

In het artikel Internationale Transact-SQL-statements schrijven uit de documentatie van SQL Server wordt uitgelegd hoe je statements schrijft die cultuurinvariant zijn:

Toepassingen die andere API's of Transact-SQL-scripts, opgeslagen procedures en triggers gebruiken, moeten de niet-gescheiden numerieke tekenreeksen gebruiken. Bijvoorbeeld jjjjmmdd als 19980924.

BEWERKEN

Aangezien u ADO gebruikt, is de beste optie om de query te parametriseren en de datumwaarde door te geven als een datumparameter. Op deze manier vermijdt u het formaatprobleem volledig en profiteert u ook van de prestatievoordelen van geparametriseerde zoekopdrachten.

UPDATE

Om het ISO 8601-formaat letterlijk te gebruiken, moeten alle elementen worden gespecificeerd. Om te citeren uit het ISO 8601-gedeelte van de datetime-documentatie

Om het ISO 8601-formaat te gebruiken, moet u elk element in het formaat specificeren. Dit omvat ook de T, de dubbele punten (:), en de punt (.) die in het formaat worden weergegeven.

... de fractie van de tweede component is optioneel. De tijdcomponent wordt gespecificeerd in het 24-uursformaat.



  1. mysqli:kan het meerdere queries in één statement voorbereiden?

  2. Verbinding maken met MySQL vanaf de opdrachtregel

  3. Hoe kan ik geselecteerde rijen bijwerken met waarden uit een CSV-bestand in Postgres?

  4. wat is een goede manier om horizontale scherf in postgresql te plaatsen?