Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znacznik czasu
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Blackhole
Cześć.

W jednej z kolumn tabeli potrzebuję zapisać znacznik czasu. Potrzebny jest po to, bym mógł obliczyć przedział czasowy pomiędzy tymi znacznikami.
Chyba najlepiej, jakby wpisywany był znacznik UNIX-owy czasum czyli ilość sekund, która upłynęła od roku 1970.

Jak mam prawidłowo zadeklarować tę kolumnę ze znacznikami :?:

Teraz mam tak, iż do kolumny zadeklarowanej jako "date" wpisuję wynik działania funkcji "mktime()" z php. Okazuje się jednak, że do bazy wpisana zostaje data w formacie "Y-m-d". Jak tego uniknąć :?:
SongoQ
typ pola timestamp

Wkladasz w ten sposob TO_TIMESTAMP('data', 'maska')

Przykład: TO_TIMESTAMP('2005-03-22', 'YYYY-MM-DD')
Blackhole
Ok. Ustawiłem kolumnę na "timestamp". Do niej zapisuję wynik działania "mktime()". PostgreSQL wywala mi takie coś:
Cytat
ERROR: column "data" is of type timestamp without time zone but expression is of type integer.
HINT: You will need to rewrite or cast the expression.
SongoQ
Musisz rzutowac na typ timestamp.
Blackhole
A czyż funkcja "mktime()" nie zwraca 'timestampa'?
Mogę prosić o przykład kodu?
SongoQ
1 rzecz to timestamp w postgresie != od timestamp w unixie.

W postgresie jest zapisywany z dokladnascia do milisekund.

Przyklad zapisania daty na timestamp do postgresa podalem Ci powyzej, jesli masz date w postaci timestamp unixowej to zapisujesz w ten sposob:

  1. INSERT
  2. INTO test (DATA) VALUES ('1970-01-01 00:00:00'::timestamp + '1111516654'::interval)


lub

  1. INSERT
  2. INTO test (DATA) VALUES ('1970-01-01 00:00:00'::timestamp + 1111516654::text::interval)


lub z wykorzystaniem abstime

  1. INSERT
  2. INTO test (DATA) VALUES (abstime(1111516654))
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.