Datum?

mrfishly

Mitglied
Hallo zusammen.

Ich hab da mal wieder ein Prob. Ich hab ein script geschrieben für screenshots hochzuladen. soweit so gut. auch. Aber jetzt wollt ich das script noch was erweitern und sowas machen damit der User sein kommentar zu den screenshots machen kann. Nur ich frag mich wie ich jetzt das datum und die Uhrzeit des Kommentars in die datenbank bekomme.

Kurz: Wie muss ich das Feld in der datenbank deklarieren únd wie sieht der eintrag im php code aus?

Danke schonmal im Voraus.

Fish
 
Re: Datum? Häääää?

Eine Möglichkeit wäre, ein Feld vom Typ DATETIME in deiner Tabelle anzulegen. Davon rate ich dir allerdings zwecks einfacherer Weiterverarbeitung ab. Benutz stattdessen ein Feld, das einen INT-Wert aufnehmen kann. Darin speicherst du den Unix-Timestamp, der die verstrichenen Sekunden seit dem 01.01.1970 0:00 GMT angibt.

Beispiel:
Code:
INSERT INTO `tabelle` (`foo`, `zeit`) VALUES ('bar', UNIX_TIMESTAMP())

Zur Ausgabe formatieren kannst du diesen Wert dann bspw. mit der Funktion [phpf]date[/phpf].
 
Re: Datum? Häääää?

Matthias Reitinger hat gesagt.:
Eine Möglichkeit wäre, ein Feld vom Typ DATETIME in deiner Tabelle anzulegen. Davon rate ich dir allerdings zwecks einfacherer Weiterverarbeitung ab. Benutz stattdessen ein Feld, das einen INT-Wert aufnehmen kann. Darin speicherst du den Unix-Timestamp, der die verstrichenen Sekunden seit dem 01.01.1970 0:00 GMT angibt.

Beispiel:
Code:
INSERT INTO `tabelle` (`foo`, `zeit`) VALUES ('bar', UNIX_TIMESTAMP())

Zur Ausgabe formatieren kannst du diesen Wert dann bspw. mit der Funktion [phpf]date[/phpf].
Und warum sollte man bitte ein DATETIME-Feld nicht einfach weiterverarbeiten können. Für Datumsangaben sollte man immer DATETIME verwenden, und niemals INT.
mySQL stellt dir eine Menge Datumsfunktionen zur Verfügung, mit denen man wunderbar ein Datum verarbeiten kann (unter anderem auch eine Funktion, die dir den UNIX-Timestamp des Datums zurückgibt).

http://dev.mysql.com/doc/mysql/de/DATETIME.html
http://dev.mysql.com/doc/mysql/de/Date_and_time_functions.html
 
Re: Datum? Häääää?

Oliver Gringel hat gesagt.:
Und warum sollte man bitte ein DATETIME-Feld nicht einfach weiterverarbeiten können.
Weil keine einzige PHP-Funktion was mit einem DATETIME-Wert anfangen kann z.B.? :)

Oliver Gringel hat gesagt.:
Für Datumsangaben sollte man immer DATETIME verwenden, und niemals INT.
Begründung?

Oliver Gringel hat gesagt.:
mySQL stellt dir eine Menge Datumsfunktionen zur Verfügung, mit denen man wunderbar ein Datum verarbeiten kann (unter anderem auch eine Funktion, die dir den UNIX-Timestamp des Datums zurückgibt).
Ist mir natürlich bekannt. Aber wozu ständig DATETIME in einen Timestamp umwandeln, wenn man doch auch gleich den Timestamp speichern kann?
 
Re: Datum? Häääää?

Matthias Reitinger hat gesagt.:
Weil keine einzige PHP-Funktion was mit einem DATETIME-Wert anfangen kann z.B.? :)
Wenn du das Datum mit PHP weiter verarbeiten willst, kannst du dir es mit der Funktion UNIX_TIMESTAMP als Timestamp zurückgeben lassen. Wenn du das Datum direkt ausgeben willst, kannst du es mit der Funktion DATE_FORMAT formatieren, wie du willst.

Matthias Reitinger hat gesagt.:
INT ist für Zahlenwerte im Bereich von -2147483648 bis 2147483647 bzw. von 0 bis 4294967295 gedacht. DATETIME, wie der Name schon sagt, für ein Datum mit Zeitangabe, im Bereich von '1000-01-01 00:00:00' bis '9999-12-31 23:59:59'. Damit hast du eine viel größere Zeitspanne, als bei Timestamps.
Was machst du, wenn du z.B. ein Geburtsdatum vor dem 1.1.1970 ausgeben möchtest?
Und das Jahr 2037 wird auch kommen, soviel ist sicher. Bis dahin wird es wahrscheinlich keine UNIX-Timestamps mehr geben, aber es ist einfach zukunftsorientiert, auf bessere Alternativen umzusteigen :)


Matthias Reitinger hat gesagt.:
Ist mir natürlich bekannt. Aber wozu ständig DATETIME in einen Timestamp umwandeln, wenn man doch auch gleich den Timestamp speichern kann?
Siehe 1. und 2. Argument.
 
Zuletzt bearbeitet:
Re: Datum? Häääää?

Mach aus dem Feld den Typen "DATETIME".
Diesem brauchts du dann nur einen TIMESTAMP zu übergeben.

Peace smo
 
Re: Datum? Häääää?

DATETIME verwenden!

1. is es genau dafür da und von daher auch dafür optimiert
2. kannst du mit NOW() direkt im query den aktuellen timestamp setzen
3. für was willst du unbedingt den UNIX-Timestamp als Integer speichern.. dadurch muss dein Interpreter nur mehr rechnen => Performancegedanken

MfG Dominik
 
Re: Datum? Häääää?

Oliver Gringel hat gesagt.:
Wenn du das Datum mit PHP weiter verarbeiten willst, kannst du dir es mit der Funktion UNIX_TIMESTAMP als Timestamp zurückgeben lassen. Wenn du das Datum direkt ausgeben willst, kannst du es mit der Funktion DATE_FORMAT formatieren, wie du willst.
Ich werf nur mal das Wort "Lokalisierung" in den Raum ;) Damit kann DATE_FORMAT nämlich nichts anfangen.

Oliver Gringel hat gesagt.:
INT ist für Zahlenwerte im Bereich von -2147483648 bis 2147483647 bzw. von 0 bis 4294967295 gedacht. DATETIME, wie der Name schon sagt, für ein Datum mit Zeitangabe, im Bereich von '1000-01-01 00:00:00' bis '9999-12-31 23:59:59'. Damit hast du eine viel größere Zeitspanne, als bei Timestamps.
Man nehme einen 64-bittigen Timestamp und erwäge, dass man dann eine Zeitspanne von einer guten halben Billion Jahre abbilden könnte ;)

Oliver Gringel hat gesagt.:
Was machst du, wenn du z.B. ein Geburtsdatum vor dem 1.1.1970 ausgeben möchtest?
Und das Jahr 2037 wird auch kommen, soviel ist sicher. Bis dahin wird es wahrscheinlich keine UNIX-Timestamps mehr geben, aber es ist einfach zukunftsorientiert, auf bessere Alternativen umzusteigen :)
Geht's hier um Geburtsdaten? Ich glaub nicht ;) Und wer im Jahr 2037 noch nicht mit 64-bit-Timestamps arbeitet, ist selber schuld :p
 

Neue Beiträge

Zurück