Zeitstempel- und Datumsvergleich in MySQL – mehrdeutiger Fehler
-
14-09-2020 - |
Frage
Dies ist eine Folgefrage zu einer Frage, bei der ich gestern hier Hilfe bekommen habe, aber es ist ein etwas anderes Problem – ich versuche zu überprüfen, ob ein MySQL-Zeitstempel eines Datenbankeintrags mit 7 Tagen in der Vergangenheit übereinstimmt (Stunden und Sekunden usw. werden ignoriert). , aber ich erhalte die Fehlermeldung „Spalte ‚Importdatum‘ in der Where-Klausel ist nicht eindeutig“. Kann jemand das Problem erkennen?
Dies ist der Datumsvergleich:Zeitstempel, z. B. 13.07.2010 11:04:27
WHERE date_format( `import_date`, "%Y-%m-%d" ) =
date_format( date_sub( now(), INTERVAL 11 DAY ), "%Y-%m-%d" )
Lösung
Was Ihren mehrdeutigen Fehler betrifft, müssen in der Abfrage zwei Tabellen mit jeweils einer vorhanden sein import_date
Spalte.Sie müssten verwenden
WHERE date_format( `YourTableName`.`import_date`, "%Y-%m-%d" ) =
date_format( date_sub( now(), INTERVAL 11 DAY ), "%Y-%m-%d" )
Ich möchte jedoch hinzufügen, dass Ihre obige Abfrage ineffizient sein wird, da dies nicht der Fall ist SARGABLE
Ich kenne mich mit MySQL nicht gut genug aus, um genau zu wissen, was es tut, aber es ist auf jeden Fall besser, wenn Sie es umschreiben
WHERE `YourTableName`.`import_date` = x
oder
WHERE `YourTableName`.`import_date` between x and y
wie angemessen