Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Che Guevara


 Thema: MYSQL Abfragen
erste ungelesene Seite | letzter Beitrag 
BierDeckelJoe

AUP BierDeckelJoe 17.06.2011
Hallo,

ich arbeite seit kurzem an einer kleinen Webapplikation.
Nun müsste ich die letzten Datensätze vom Vortag aus meiner SQL-Datenbank abfragen, da ich diesen Wert als Berechnungsbasis benötigen würde.
Die letzten Datensätze werden irgendwann zw. 21:50 - 22:00 erstellt. Die nächsten Datensätze werden erst wieder am nächsten Tag ab 09:00 erstellt.
Die Anzahl der Datensätze ist variabel, wobei der gesetzte Timestamp für jeden dieser Einträge ident ist. Dh. es gibt mehrere Datensätze mit gleichem Timestamp, die ich auslesen müsste.

Mit SQL bin ich leider noch nicht allzu fit und mithilfe von Operatoren komm ich auch nicht ans Ziel.

 
Code:
SELECT *
FROM stocks
WHERE date > "2015-02-10" AND date < "2015-02-11"

liefert mir Datensätze. Sobald ich allerdings noch die Zeitangabe hinzufüge, liefert mir die DB keine Ergebnisse traurig

edit: Die Zeit wird in einem DATETIME Format gespeichert.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von BierDeckelJoe am 10.02.2015 10:45]
10.02.2015 10:31:22  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
derSenner

AUP derSenner 08.04.2020
Ich hab das gerade bei mir getestet (MySQL), und da funktioniert das an sich soweit:

id: int(11)
text: varchar(255)
date: datetime

 
Code:
id ; text ; date
--------------
1 ; foo ; 2015-02-17 21:55:28
2 ; bar ; 2015-02-17 21:59:40
3 ; baz ; 2015-02-18 09:18:37
4 ; boz ; 2015-02-18 16:20:18


 
Code:
SELECT id, text, date FROM table WHERE
date > "2015-02-17" AND date < "2015-02-18"

id ; text ; date
--------------
1 ; foo ; 2015-02-17 21:55:28
2 ; bar ; 2015-02-17 21:59:40


 
Code:
SELECT id, text, date FROM table WHERE
date > "2015-02-17" AND date < "2015-02-19"

id ; text ; date
--------------
1 ; foo ; 2015-02-17 21:55:28
2 ; bar ; 2015-02-17 21:59:40
3 ; baz ; 2015-02-18 09:18:37
4 ; boz ; 2015-02-18 16:20:18


 
Code:
SELECT id, text, date FROM table WHERE
date > "2015-02-17 21:56:00" AND date < "2015-02-18"

id ; text ; date
--------------
2 ; bar ; 2015-02-17 21:59:40


 
Code:
SELECT id, text, date FROM table WHERE
date > "2015-02-17 21:56:00" AND date < "2015-02-18 16:20:18"

id ; text ; date
--------------
2 ; bar ; 2015-02-17 21:59:40
3 ; baz ; 2015-02-18 09:18:37


Hast du evtl. das Leerzeichen zwischen der Zeitangabe nicht richtig gesetzt bzw. irgendwie das Format der Zeitangabe verletzt/falsch konvertiert?


So nebenbei:
Im allgemeinen mache ich es immer so, dass ich Zeiten als Unix-Timestamps abspeichere.
Mein date-Feld wäre also (mindestens) int(10), worin ich einen Timestamp in Sekunden abspeichern würde, z.B. 1424136370 für den 17.02.2015, 02:26:10. Der Vorteil dabei ist, dass man solche Auswahloperationen wie oben logischer durchführen kann, anstatt sich mit irgendwelchen Datums-Strings/Konversionen herumzuschlagen (also z.B. WHERE date > 1424136370 AND date < 1424146370).

E: Timestampkonversion am Beispiel PHP:
 
Code:
$now = time(); // Aktueller Timestamp
$xmasTimestamp = mktime(12, 00, 00, 12, 24, 2015); // Timestamp zu Weihnachten
$xmasDate = date('d.m.Y, h:i:s', $xmasTimestamp); // Weihnachts-Timestamp als String ausgeben
[Dieser Beitrag wurde 7 mal editiert; zum letzten Mal von derSenner am 17.02.2015 2:58]
17.02.2015 2:31:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: MYSQL Abfragen


mods.de - Forum » Webdesign & Coding » 

Hop to:  

| tech | impressum