sql: unix timestamp als default
sql: unix timestamp als default
Hi,
wie kann ich beim erstellen einer Tabelle einer Spalte als Default-Wert den momentanen Unix-Timestamp eintragen?
Am besten soll der Datentyp INTEGER (11?!) sein, der normale TIMESTAMP-Datentyp speichert ja leider in der form 1970-01-01 00:00:00
Grüße
Jos
wie kann ich beim erstellen einer Tabelle einer Spalte als Default-Wert den momentanen Unix-Timestamp eintragen?
Am besten soll der Datentyp INTEGER (11?!) sein, der normale TIMESTAMP-Datentyp speichert ja leider in der form 1970-01-01 00:00:00
Grüße
Jos
Re: sql: unix timestamp als default
Das ist nur Darstellung.
(wenn ts deine TIMESTAMP Spalte ist und t die Tabelle)
schau was Da rauskommt:

Code: Select all
select UNIX_TIMESTAMP(ts) from t;Das besser! Noch gibt es Menschen, die vor 1970 geboren wurden!speichert ja leider in der form 1970-01-01...
schau was Da rauskommt:
Code: Select all
UNIX_TIMESTAMP("1969-01-01 01:00:00");
Last edited by lucki2 on 2006-11-14 10:27, edited 1 time in total.
Re: sql: unix timestamp als default
Falsch verstanden.
Ich will sobald ich einen neuen Datensatz anlege, automatisch von seiten SQL den UNIX_TIMESTAMP eintragen lassen.
So in der art:
Leider funktioniert das nicht.
Ich will sobald ich einen neuen Datensatz anlege, automatisch von seiten SQL den UNIX_TIMESTAMP eintragen lassen.
So in der art:
Code: Select all
CREATE TABLE groups(
`id` INTEGER( 11 ) AUTO_INCREMENT ,
`creation_date` INT( 11 ) DEFAULT UNIX_TIMESTAMP() ,
PRIMARY KEY( `id` ),
);Re: sql: unix timestamp als default
Das habe ich schon so verstanden.
Nicht verstehe ich, warum Du eine Zeit in einem INTEGER speichern willst, wenn es dafür den TIMESTAMP datentyp gibt, der genau das selbe macht(bzw besser: 1970!), was Du von dem Integer willst.
Nicht verstehe ich, warum Du eine Zeit in einem INTEGER speichern willst, wenn es dafür den TIMESTAMP datentyp gibt, der genau das selbe macht(bzw besser: 1970!), was Du von dem Integer willst.
Re: sql: unix timestamp als default
Eben weil TIMESTAMP Daten nur in der Form (1970-01-01 00-00-00) erwartet.
Es ist irrelevant was vor 1970 war, es geht um UNIX_TIMESTAMPS die AUTOMATISCH erstellt werden sollen, sprich da kann nie irgendwie eine Zeit vor JETZT sein.
Ich will einen UNIX_TIMESTAMP, weil mein PHP-Script damit arbeitet und die Daten so erwartet, ich bin nur am umdesignen der Datenbank, das PHP soll/MUSS unangerührt bleiben. Also gibt es da eine Möglichkeit? :)
Jos
ps. Danke für die Antworten!
Es ist irrelevant was vor 1970 war, es geht um UNIX_TIMESTAMPS die AUTOMATISCH erstellt werden sollen, sprich da kann nie irgendwie eine Zeit vor JETZT sein.
Ich will einen UNIX_TIMESTAMP, weil mein PHP-Script damit arbeitet und die Daten so erwartet, ich bin nur am umdesignen der Datenbank, das PHP soll/MUSS unangerührt bleiben. Also gibt es da eine Möglichkeit? :)
Jos
ps. Danke für die Antworten!
Re: sql: unix timestamp als default
Das dachte mir.weil mein PHP-Script..
Deswegen habe ich Dir ja auch gesagt: einfach dem MySQL sagen wie Du den TIMESTAMP dargestellt haben willst - in Deinem falle als UNIX_TIMESTAMP.
Als Default kannst Du nur Konstanten angeben mit der großen Ausnahme CURRENT_TIMESTAMP.
Re: sql: unix timestamp als default
ahhh das PHP darf nicht angerührt werden. Das war das entscheidende.
Vielleicht hilft Dir ein View? Aber Du brauchst ein neueres MySQL dafür:
Dann geht das:
Vielleicht hilft Dir ein View? Aber Du brauchst ein neueres MySQL dafür:
Code: Select all
create view tview as select UNIX_TIMESTAMP(ts) as ts from t;Code: Select all
select * from tview;Re: sql: unix timestamp als default
Das ist eine Idee, Danke.
Mal sehen, des ganze muss kompatibel zu soviel wie möglich sql versionen sein, deswegen hab ich vermutlich tatsächlich keine andere Wahl als die unendlich vielen und komplizierten PHP-Funktionen zu ändern.
Thx!
Jos
Mal sehen, des ganze muss kompatibel zu soviel wie möglich sql versionen sein, deswegen hab ich vermutlich tatsächlich keine andere Wahl als die unendlich vielen und komplizierten PHP-Funktionen zu ändern.
Thx!
Jos
Re: sql: unix timestamp als default
Dann brauchst Du wahrscheinlich sowieso einen Wrapper.zu soviel wie möglich sql versionen sein
Idee:ODBC dazwischen, und das Mappen dem ODBC überlassen oder PEAR ansehen, ob das was hilft:
http://pear.php.net/package/DB/
Du kannst bei Pear auch in den Source schauen, wie die das machen, und für Dich optimieren. HTH