sql >> Database >  >> RDS >> Mysql

mysql datum vergelijking met date_format

Uw formaat is in principe niet sorteerbaar om mee te beginnen - u vergelijkt strings , en de tekenreeks "28-10-2012" is groter dan "02-11-2012".

In plaats daarvan moet je datums vergelijken als datums , en dan alleen converteren naar uw doelformaat voor uitvoer.

Probeer dit:

select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';

(De invoer moet altijd in de vorm van een jaar-maand-waarde zijn, volgens de documentatie .)

Merk op dat als starttime is een DATETIME veld, kunt u overwegen de zoekopdracht te wijzigen om herhaalde conversie te voorkomen. (De optimizer is misschien slim genoeg om het te vermijden, maar het is het controleren waard.)

select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';

(Merk op dat het ongebruikelijk is om een ​​datum op te maken als d-m-Y om te beginnen - het is beter om y-M-d . te gebruiken in het algemeen, de ISO-8601-standaard enz. De bovenstaande code doet echter wat u in de vraag vroeg.)



  1. Beheer wachtwoord en bronnen in Oracle met behulp van Profile

  2. Cloud Database-opties vergelijken voor PostgreSQL

  3. Fout bij het declareren van integer-variabele in de MySQL-opgeslagen functie

  4. Een SQL Server Agent-taak uitvoeren met T-SQL