SQL - Nach Timestamp abfragen

Sasser

Erfahrenes Mitglied
Guten Morgen!

Ich versuche Domains abzurufen und diese nach Datum zu gruppieren.

Aber was mache ich falsch?

Code:
SELECT DATE_FORMAT(`time`, '%d.%m.%Y') AS item, COUNT(`id`) AS number FROM `domains` WHERE DATE_FORMAT(`time`, '%Y-%m-%d') >= DATE_ADD(CURDATE(), INTERVAL - 4 WEEK) GROUP BY DATE_FORMAT(`time`, '%Y-%m-%d')
 
MySQL?

in welchem Format ist das Feld time?

Du verwendest dauerns DATE_FORMAT(). Das macht aus einem MySQL-Datum ein String.
DATA_ADD() gibt aber ein Datum und nciht ein String zurück.
Um das Datum aus einem Zeitstempel (Datum und Zeit) zu extrahieren gibt es die Funktion DATE()

SQL:
SELECT 
	DATE_FORMAT(`time`, '%d.%m.%Y') AS item, 
	COUNT(`id`) AS number 
FROM 
	`domains` 
WHERE DATE(`time`) >= DATE_ADD(DATE(NOW()), INTERVAL - 4 WEEK) 
GROUP BY DATE(`time`)
 
Zuletzt bearbeitet von einem Moderator:
Das Feld ist in einem normalen int-Format, da ich darin einen Unix-Timestamp abgespeichert habe.

Gibt es eine Möglichkeit aus diesem per SQL wieder ein Datum zu machen und zu sortieren?
 
SQL:
FROM_UNIXTIME(`time`)  -- Zeitstempel mit Uhrzeit
DATE(FROM_UNIXTIME(`time`)) -- Zeitstempel ohne Uhrzeit

Nachtrag:
Und vom Zeitstempel zu UNIX-Time:
SQL:
UNIX_TIMESTAMP(timestamp)
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank, es funktioniert!

Kann man das Datum auch formatiert als dd.mm.YYYY ausgeben?

Code:
SELECT DATE(FROM_UNIXTIME(`time`)) AS item, COUNT(`id`) AS number FROM `domains`
WHERE DATE(FROM_UNIXTIME(`time`)) >= DATE_ADD(CURDATE(), INTERVAL - 4 WEEK)
GROUP BY DATE(FROM_UNIXTIME(`time`))

// EDIT: Habs hinbekommen ;)
 
Im SELECT-Teil, kannst du das DATE() weglassen und dem FROM_UNIXTIME das FOrmat mitgeben
SQL:
FROM_UNIXTIME(`time`, '%d.%m.%Y') AS item
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück