SQLite - Where Datum >= NOW?
Hallo,
ich habe folgendes Problem:
Ich möchte aus der Datenbank Werte auslesen, die im Format Datetime gespeichert sind.
Datenbankaussehen:
Spalte: datumveröffentlichung
Inhalt: 2022-09-01 00:00:00
Ich möchte nur Datensätze, die in der Vergangenheit von heute liegen, also wenn datumveröffentlichung <=/kleiner heute ist.
Meine Anfrage:
if (isset($_GET['t'])) {
$thema = $_GET['t'];
$jetzt = date("Y-m-d H:i:s");
$sqlueberlektionen = "SELECT thema,titel,alttextcard,imgcard FROM '$thema' WHERE $jetzt";
$abfrageueberlektionen = $verbindung->prepare($sqlueberlektionen);
$abfrageueberlektionen->execute();
$lektionen = $abfrageueberlektionen->fetchAll();
}
Ps.: Sonnst funktioniert das Skript.
2 Antworten
SELECT thema, titel, alttextcard, imgcard FROM '{$thema}' WHERE datumveröffentlichung < DATE('now')
Das sollte funktionieren. Sofern die Spalte Datetime ist natürlich. "DATE" gibt das heutige Datum.
Anmerkungen:
- Natürlich kannst du das Datum auch PHP Seitig festlegen und dem SQL so mitgeben. Meines Erachtens nach ist es aber oft besser Dinge die der SQL Server machen kann, ihn auch machen zu lassen.
- Umlaute im Spaltennamen sind zwar möglich, sollte man aber vermeiden.
- Packe PHP Variablen in einem String am besten in geschweifte Klammern, ist nicht immer notwendig, vermeidet aber Fehler wenn man es sich angewöhnt hat.
Natürlich. Dann statt DATE() einfach DATETIME() verwenden :)
Danke für deine Antwort funktioniert wunderbar.
Hatte kurz vergessen, dass bei datetime die Angaben in UTC eingegeben werden müssen.
SELECT thema,titel,alttextcard,imgcard FROM '$thema' WHERE datumveröffentlichung < convert(date, GetDate())
Du nimmst die aktuelle Uhrzeit+Datum, entfernst durch das Convert die Uhrzeit und bekommst als Ergebnis das aktuelle Datum. Dadurch funktioniert es auch wenn eine Uhrzeit in der Spalte angegeben ist und nicht 00:00:0000 im Feld steht.
Danke für deine Antwort, doch leider funktioniert sie nicht.
Fehlermeldung:
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1 no such column: date in C:\Users\***\OneDrive\Desktop\DWL (resp + DB)\database\conecttodb.php:20 Stack trace: #0 C:\Users\***\OneDrive\Desktop\DWL (resp + DB)\database\conecttodb.php(20): PDO->prepare('SELECT thema,ti...') #1 C:\Users\***\OneDrive\Desktop\DWL (resp + DB)\pages\msoffice\excel\lektionenuebersicht.php(5): include_once('C:\\Users\\***\\...') #2 {main} thrown in C:\Users\***\OneDrive\Desktop\DWL (resp + DB)\database\conecttodb.php on line 20
Weil (wie von Gho5txx erwähnt) ist meine Lösung für SQL Server, nicht für Sqlite. Beachte die Antwort von Gho5txx, das passt für Sqlite
Ich mag falsch liegen, aber "GetDate()" ist eine MSSQL-Server Funktion, nicht verfügbar in z.B MySQL oder dem Fragesteller genanntem SQLite
Da hast du recht. Ich bin davon ausgegangen das es die überall gibt.
Danke funktioniert auf den ersten Blick, konnte es aber noch nicht live testen.
Eines noch, wenn ich die Daten aber auch nach der angehängten Zeit freigeben möchte, also:
Freigabe -> 2022-09-01 10:00:00
Also dass er auch die Zeit berücksichtigt, falls das geht?