sql >> Database teknologi >  >> RDS >> Mysql

mysql datosammenligning med date_format

Dit format er grundlæggende ikke sorterbart til at starte med - du sammenligner strenge , og strengen "28-10-2012" er større end "02-11-2012".

I stedet bør du sammenligne datoer som datoer , og derefter kun konvertere dem til dit målformat til output.

Prøv dette:

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

(Input skal altid være i år-måned-værdi-form, som pr. dokumentationen .)

Bemærk, at hvis starttime er en DATETIME kan du overveje at ændre forespørgslen for at undgå gentagen konvertering. (Optimeringsværktøjet kan godt være smart nok til at undgå det, men det er værd at tjekke.)

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

(Bemærk, at det er usædvanligt at formatere en dato som d-m-Y til at starte med - det ville være bedre at bruge y-M-d generelt, da det er ISO-8601-standarden osv. Ovenstående kode gør dog, hvad du bad om i spørgsmålet.)



  1. Sådan beregnes rang i MySQL

  2. Sådan deaktiveres Change Data Capture (CDC) på en database i SQL Server - SQL Server Tutorial

  3. SQL Server bruger høj CPU, når der søges i nvarchar-strenge

  4. Vælg alle måneder inden for et givet datospænd, inklusive dem med 0 værdier