Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Porównanie dat mysql z formatem date_format

Twój format zasadniczo nie jest możliwy do sortowania – porównujesz ciągi , a ciąg „28-10-2012” jest większe niż „11.02.2012”.

Zamiast tego powinieneś porównywać daty jako daty , a następnie tylko przekonwertować je na docelowy format do wyjścia.

Spróbuj tego:

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

(dane wejściowe muszą być zawsze w formie rok-miesiąc-wartość, zgodnie z dokumentacja .)

Zauważ, że jeśli starttime to DATETIME pole, warto rozważyć zmianę zapytania, aby uniknąć powtórnej konwersji. (Optymalizator może być na tyle sprytny, aby tego uniknąć, ale warto to sprawdzić.)

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

(Pamiętaj, że formatowanie daty jako d-m-Y jest rzadkością) na początek - lepiej byłoby użyć y-M-d ogólnie jest to standard ISO-8601 itp. Jednak powyższy kod robi to, o co prosiłeś w pytaniu.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd:Tabela „mysql.proc” nie istnieje podczas dodawania źródła danych MySQL do projektu Visual Studio

  2. ASP.Net / MySQL :Tłumaczenie treści na kilka języków

  3. Nie można znaleźć wpisu type=wartość obrazu w $_POST

  4. Connect DATABASE TYP:2002:Odmowa uprawnień

  5. Wykonaj hibernację, cytując wszystkie nazwy tabel/kolumn