ich werkle gerade an einem Tagebuch, das ich für News die ich von meiner Guatemalareise aus schreibe benötige. Ich möchte die Zeit und Datum formatiert angeben. (bin noch php und postgreSql Neuling)
Ich überlege nun wie ich es lösen soll.
Bis jetzt habe ich es so gemacht:
…VALUES (’$titel’, ‘$wetter’, current_timestamp, ‘$eintrag’)";
so wurde die Zeit in die Datenbank rein geschrieben.
Sieht dann zum Beispiel so aus: 2007-03-08 16:12:01+01
Jetzt überlege ich wie ich es passend formatieren kann.
Ich benötige die Zeit mit GMT +1 und die, die es gerade in Guatemala hat. (GMT -6)
Wie kann man den mit to_char oder so arbeiten?
Kann ich so wie die Zeit in der Datenbank ist, auch mit den normalen php Funktionen arbeiten? (dachte eher nicht, weil die ja mit Unix Timestamp arbeiten?)
Soll ich es ohne PostGre Funktionen lösen, und einfach mit den Standard PHP Funktionen machen?
Na ja, bitte helft mir ein bisschen mit eurer Erfahrung weiter.
Wenn ich Google richtig parse, ist das dann ‘CST’:
test=*# select now(), now() at time zone 'cst';
now | timezone
-------------------------------+----------------------------
2007-03-09 18:02:52.782882+01 | 2007-03-09 11:02:52.782882
(1 row)
Du brauchst nur einen Wert zu speichern
Wie kann man den mit to_char oder so arbeiten?
Ich habe was ähnliches erst gestern, oder vorgestern, hier gezeigt.
Hint: speichere in timestamptz. Dann kannst Du das immer in eine lokale Zeit umrechnen. Exakt dazu dient dieser Datentyp.
Kann ich so wie die Zeit in der Datenbank ist, auch mit den normalen php Funktionen arbeiten? (dachte eher nicht, weil die ja mit Unix Timestamp arbeiten?)
PG selbst kann mit Zeitzonen rechnen. Sehr gut sogar. Dazu brauchts keiner externen Schweinereien.
Ich meine, es reicht, eine Zeit mit Zeitzone zu speichern. Der Rest ist berechenbar.
test=# select now() at time zone 'cet';
timezone
----------------------------
2007-03-09 20:29:50.242964
(1 row)
Time: 0.703 ms
test=*# select now() at time zone 'cst';
timezone
----------------------------
2007-03-09 13:29:50.242964
(1 row)
Mit anderen Worten: während wir schon müde werden, habt ihr grad Mittagsschlaf.
jap, ich habe das eh schon gelesen, war mir nur nicht sicher ob man das in den select verbuddelt oder nicht. Aber wenn es so ist, wird es wohl kein so ein großes Problem sein nehme ich an.
Hallo nocheinmal, habe es jetzt eigentlich ohne Probleme hin bekommen. Und so geht man mit allen Funktionen in PG um oder wie? (immer im select?)
Danke für deine Hilfe, geht mit PG Funktionen ja wirklich sehr fein, hätte ich nicht gedacht. Da wäre man ja blöd mit UNIX Timestamp irgendwie in PHP herum zu rechnen.
Ok verstehe, habe da aber über das verwenden von den funktionen nirgends wo was gefunden. Hast du da vielleicht irgendwo einen link wo da genauere beispiele aufgeführt sind (das erklärt wird)
Mein erster versuch war nämlich es als ganz normale php funktionen zu benutzen (was eigentlich eh unlogisch ist)
<?php
to_char(current_timestamp, 'HH12:MI:SS)
?>
lg Darian
Edit: Gibt es solche Funktionen bei MySQL eigentlich auch, oder ist PostGre Spezifisch (nur weil ich gerade versuche Gedanklich die Unterschiede der Datenbanken zu erfassen; Vorteil Nachteil Vergleich)
Mein erster versuch war nämlich es als ganz normale php funktionen zu benutzen (was eigentlich eh unlogisch ist)
<?php
to_char(current_timestamp, 'HH12:MI:SS)
?>
>
Du willst etwas haben, etwas selektieren. Daher brauchst Du dort ein select.
```text
-- Funktion als FROM-Quelle
test=# create function get_one() returns int as $$begin return 1; end; $$ language plpgsql;
CREATE FUNCTION
Time: 418.964 ms
test=*# select * from get_one();
get_one
---------
1
(1 row)
-- selbe Funktion als Sortierkriterium
test=*# select * from foo order by c;
a | b | c
---+---+---
1 | 1 | 1
1 | | 3
2 | 3 | 4
(3 rows)
Time: 1.231 ms
test=*# select * from foo order by get_one();
a | b | c
---+---+---
1 | | 3
2 | 3 | 4
1 | 1 | 1
(3 rows)
-- selbe Funktion als Teil im WHERE
test=*# select * from foo where a=get_one();
a | b | c
---+---+---
1 | | 3
1 | 1 | 1
(2 rows)
Einfach mal a bissl spielen…
Edit: Gibt es solche Funktionen bei MySQL eigentlich auch, oder ist PostGre Spezifisch (nur weil ich gerade versuche Gedanklich die Unterschiede der Datenbanken zu erfassen; Vorteil Nachteil Vergleich)
Der Hauptunterschied zu MySQL ist der Geruch. MySQL stinkt.
Nein, MySQL hat wohl auch die Möglichkeit, Funktionen zu schreiben. In PG kannst Du das aber in zig Sprachen tun, und damit ist es wohl auch so manchem kommerziellem Produkt überlegen.
Aber man kann nicht sagen, plpgsql sein PG-spezifisch, weil es einklich eine direkte Antwort auf Oracles Programmiersprache ist.