2016-12-15 5 views
4

Ich habe zwei unterschiedliche Entwicklungsumgebung, die MySQL 5.6 & Maria DB 10.0Maria DB/MySQL Unterschied beim Vergleich Timestamp

Ich benutze WHERE Abfrage wie time>="userInputBeginTime" das Mindest Datum der Daten zu begrenzen.

Leider die Vorderseite liefern falsche Datumsinformationen (in meinem Fall ist die erwartete Eingabe Datum Zeichenfolge formatiert wie "JJJJ-MM-TT", aber die echte Eingabe war "Invalid Date", die aufgrund von Javascript-Fehler)

Und dann fand ich einen Unterschied zwischen MySQL & Maria DB

In MySQL:

SELECT NOW() > "Invalid Date" test; 
+-----------+ 
|  test | 
+-----------+ 
|   0 | 
+-----------+ 

In Maria DB:

SELECT NOW() > "Invalid Date" test; 
+-----------+ 
|  test | 
+-----------+ 
|   1 | 
+-----------+ 

Dieser Unterschied führt direkt zu dem anderen Ergebnis, dass MySQL nichts zurückgegeben hat und Maria DB alles zurückgegeben hat.

Ich denke, sie können

Meine temporäre Lösung wird unter Verwendung von SQL-ähnlichen

SELECT * FROM table_name 
WHERE 
    NOT ISNULL(CONVERT("userInputBeginTime",datetime)) 
    AND time >= "userInputBeginTime" 

vergleichen verwenden unterschiedliche Methoden zu Maria DB Rückkehr nichts zu erzwingen, wenn ungültige Eingabe erkannt wurde.

Ich würde gerne wissen, ob es eine bessere Lösung gibt?

Mit freundlichen Grüßen

+0

SELECT @@ SQL_MODE; 'auf beiden Servern. Stimmen die Werte überein? –

+0

Hallo, danke. @ Michael-sqlbot Sie beide zurück + ------------ + | @@ sql_mode | + ------------ + | | + ------------ + Beide werden mit der Standardkonfiguration installiert –

Antwort

0

können Sie versuchen, STR_TO_DATE mit der Zeichenfolge als Datum in dem Format, das Sie erwarten, zu analysieren. Diese Funktion würde NULL zurückgeben, wenn das Datum im angegebenen Format nicht analysiert werden kann. Ihre schlechte Eingabe JavaScript würde in diese Kategorie fallen und NULL produzieren sollte:

SELECT * 
FROM table_name 
WHERE STR_TO_DATE(userInput, '%Y-%m-%d') IS NOT NULL AND 
     <other conditions here> 

STR_TO_DATE in MariaDB
STR_TO_DATE in MySQL

Verwandte Themen