WHERE LIKE Statement liefert kein Ergebnis
Verfasst: Sonntag 21. Februar 2021, 17:08
				
				Hallo Zusammen, 
folgende Methode erzeugt meine Datenbank:
Hier möchte ich die Spalte "Timestamp" folgendermaßen abfragen:
Ich habe einige Einträge, die beim "Timestamp" so anfangen: 2021-02-18 xx:xx:xx
Wenn ich nun aus dem QCalendar Widget die Zeit vom 18.02.2021 auswähle, erhalte ich einen String mit dem Format "2021-02-18". (Variable "selected_date")
Diese Abfrage liefert aber keine Ergebnisse, obwohl ich mindestens 10 Einträge mit dem Timestamp "2021-02-18 xx:xx:xx" habe. Die Uhrzeit interessiert mich nicht, deshalb habe ich Wildcards in der LIKE Abfrage genutzt...weiss jemand, wieso hier nichts gefunden wird?
So sieht die SQL Abfrage als String aus:
SELECT rowid, channelname, Assetid, Timestamp FROM CriticalError WHERE Timestamp LIKE '&2021-02-21&'
Wäre mega dankbar für einen Hinweis
			folgende Methode erzeugt meine Datenbank:
Code: Alles auswählen
    def write_critical_errors(self, channels, asset_ids, error_timestamp):
        cursor_crit = self.connection2.cursor()
        sql_statement_crit = "CREATE TABLE IF NOT EXISTS CriticalError (channelname TEXT, Assetid TEXT, Timestamp TEXT)"
        try:
            cursor_crit.execute(sql_statement_crit)
            werte = {"channelname":channels, "Assetid":asset_ids,"Timestamp":error_timestamp}
            sql = "INSERT INTO CriticalError VALUES (:channelname, :Assetid, :Timestamp)"
            cursor_crit.execute(sql, werte)      
            self.connection2.commit()           
        except Exception as e:
            self.logger.error('writing_process for error critical failed', exc_info=True)
            self.connection2.rollback()
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setText("Error")
            msg.setInformativeText('Could not perform sql writing process for critical errors')
            msg.setWindowTitle("Error")
            msg.exec_()   Code: Alles auswählen
    def clicked_show_day(self):
        date = self.ui.calendar.selectedDate()
        # Convert clicked date to timedelta object
        selected_date = date.toString("yyyy-MM-dd")
        print(selected_date)
        print(type(selected_date))
       # selected_date_converted = datetime.strptime(selected_date, "%Y-%m-%d")
        test = "SELECT rowid, channelname, Assetid, Timestamp FROM CriticalError WHERE Timestamp LIKE \'&"+selected_date+"&"+"\'"
        print(test)
        
        with closing(sqlite3.connect(r"D:\python_dev\GRAPHIC_ALARMING_MACHINE\DATABASE\critical_errors.db")) as connection:
                
            with closing(connection.cursor()) as cursor:
                cursor.execute(
                    "SELECT * FROM CriticalError WHERE Timestamp LIKE \'&"+selected_date+"&\'"
                )            
                critical_errors = cursor.fetchall() 
        print(critical_errors)
Wenn ich nun aus dem QCalendar Widget die Zeit vom 18.02.2021 auswähle, erhalte ich einen String mit dem Format "2021-02-18". (Variable "selected_date")
Diese Abfrage liefert aber keine Ergebnisse, obwohl ich mindestens 10 Einträge mit dem Timestamp "2021-02-18 xx:xx:xx" habe. Die Uhrzeit interessiert mich nicht, deshalb habe ich Wildcards in der LIKE Abfrage genutzt...weiss jemand, wieso hier nichts gefunden wird?
So sieht die SQL Abfrage als String aus:
SELECT rowid, channelname, Assetid, Timestamp FROM CriticalError WHERE Timestamp LIKE '&2021-02-21&'
Wäre mega dankbar für einen Hinweis