Piotr W.

Piotr W. fullstack
webdeveloper,
Android developer

Temat: Porównanie daty (DATETIME) w MySQL

Wykonując zapytanie jakie podał Marek (minimalna modyfikacja daty):
SELECT  * FROM  'jos_content' WHERE created > '2013-03-05 00:00:00'
Generalnie występuje errorek następujący:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''jos_content' WHERE created >  '2012-03-05 00:00:00' ' at line 2 
Natomiast kiedy 'jos_content' ujmę bez apostrofów wszystko jest ok. Czyli działa nawet bez konwersji w stylu STR_TO_DATEPiotr W. edytował(a) ten post dnia 06.03.13 o godzinie 15:23
Marek Skopowski

Marek Skopowski Development Team
Leader

Temat: Porównanie daty (DATETIME) w MySQL

1. Twoja tabela jest na engine MyISAM, a nie InnoDB jak pisałeś.
2. Zapytanie, które wkleiłem ("SELECT * FROM `test` WHERE dt > '2013-03-05'") nie generuje błędów, nie przekleiłeś zapytania tylko przepisałeś i podczas przepisywania zamieniłeś znaki ` na ', to właśnie one powodują błąd skłądni SQL'a.

Ciesze się, że udało nam się dojść w końcu do konsensusu, bo jak rozumiem, zapytanie już działa poprawnie.

Pozdrawiam.
Piotr W.

Piotr W. fullstack
webdeveloper,
Android developer

Temat: Porównanie daty (DATETIME) w MySQL

1. Rzeczywiście engine to MyISAM. Po mojej analizie skąd wziąłem InnoDB okazało się, że w bazie docelowej do której zapisuję skonwertowane dane pobrane problematycznym selectem identyczna tabela zawierająca datę jest InnoDB.
2. Kłania się zasada apostrof apostrofowi nierówny. Rzeczywiście Marku przyklejenie działa prawidłowo. Idzie select nawet bez czasu tak jak Ty podałeś (konwersja jest w locie przez bazę do porównania dat robiona).

Dzięki za pomoc. Mogę generalnie zrezygnować z STR_TO_DATE - zawsze jedna dodatkowa operacja do bazy mniej.

Następna dyskusja:

MySQL Workbench problem z d...




Wyślij zaproszenie do