PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timestamp als Jahr aus Db einmalig?


exweised
21.11.2004, 14:44:12
Hallo,

wie lese ich nur das Jahr einmalig aus einer Db-Tabelle?

Also, dass Datum ist als timestamp gespeichert. Jetzt soll aus der ganzen Spalte die vorhandenen Jahre ausgelesen werden. Leider weis ich nicht wirklich wie ich das anstellen soll. Ich hatte schon einige varianten, aber keine funktioniert.

SELECT DISTINCT DATE_FORMAT(time, "%Y") FROM ...

SELECT DISTINCT time AS date("Y") FROM ...

Ich hatte noch zwei weitere komische varianten. Naja, hatte. Die zwei reichen ja um sich zum klopps zu machen. Ich hoffe ihr könnt mir helfen.

xabbuh
21.11.2004, 15:24:19
<?php
$sql = "SELECT
DISTINCT
DATE_FORMAT(time, '%Y') AS zeit
FROM
table
ORDER BY
zeit DESC";
?>

funktioniert bei mir ohne Probleme. Die Inhalte der Spalte time sind auch wirklich im MySQL-Timestampformat?

exweised
21.11.2004, 15:43:20
hmm, varchar(10) mit inhalten wie: 1062406815

ist doch so korrekt?
$sql = 'SELECT DISTINCT DATE_FORMAT(time, "%Y") AS zeit FROM ' . $dbtable . ' ORDER BY zeit DESC';

$select = @mysql_db_query($dbname, $sql, $verbindung);

while( $result = @mysql_fetch_array($select) )
{
echo $result['zeit'] . '<br>';
}

er zeigt mir nur ein <br> an. es liegen mindestens 2 jahre in der tabelle.

xabbuh
21.11.2004, 17:01:08
Bedenke, dass sich UNIX-Timestamp (den du benutzt) und MySQL-Timestamp unterscheiden:
- der UNIX-Timestamp nimmt die Zeit seit dem 1.1.1970 in Sekunden
- der MySQL-Timestamp speichert das Datum einfach im Format YYYYMMDDHHMMSS

Du müsstest also entweder den Spaltentyp auf Timestamp und dementsprechend auch die Daten ändern oder du kannst das, was du machen willst, erst mit PHP machen und musst vorher alle Daten auswählen, da sich die Datums- und Zeitfunktionen (http://dev.mysql.com/doc/mysql/de/Date_and_time_functions.html) nicht auf einen UNIX-Timestamp anwenden lassen.

exweised
21.11.2004, 19:28:36
aha, gut, danke. dann muss ich das mit php lösen. ;-)

tapferesschneid
27.11.2004, 16:49:00
... oder eben SELECT DISTINCT YEAR( FROM_UNIXTIME( time ) )
FROM table

exweised
27.11.2004, 17:09:29
mit

AS zeit

hat es dann auch wirklich funktioniert. vielen Dank. ;-)