sql >> Databáze >  >> RDS >> Mysql

porovnání data mysql s datem_format

Váš formát v zásadě není seřaditelný pro začátek – porovnáváte řetězce a řetězec "28-10-2012" je větší než "02-11-2012".

Místo toho byste měli porovnávat data jako data a poté je pouze převedete do cílového formátu pro výstup.

Zkuste toto:

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

(Vstup musí být vždy ve tvaru rok-měsíc-hodnota, jak je uvedeno v dokumentaci .)

Všimněte si, že pokud starttime je DATETIME pole, můžete zvážit změnu dotazu, abyste se vyhnuli opakované konverzi. (Optimalizátor může být dost chytrý, aby se tomu vyhnul, ale stojí za to to zkontrolovat.)

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

(Všimněte si, že je neobvyklé formátovat datum jako d-m-Y pro začátek - bylo by lepší použít y-M-d obecně jde o standard ISO-8601 atd. Výše ​​uvedený kód však dělá to, co jste požadovali v otázce.)



  1. Pro víceřádkový dotaz použijte \copy psql

  2. Chyba SQL:ORA-01861:literál neodpovídá formátovacímu řetězci 01861

  3. Jak zacházet s chybou u duplicitních záznamů?

  4. Jedinečné omezení Mysql umožňující jeden řádek pro kombinaci