Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL] format daty zapisywany w bazie
Forum PHP.pl > Forum > Przedszkole
rasten
Witam,
jak wymusić na postgresie aby zapisywał datę w określonym formacie? Kolumna jest oczywiście typu 'date'. Jak narazie to udało mi się za pomocą polecenia set datastyle = DMY ustawić żeby user mógł wpisać date w formacie dd.mm.yyyy ale baza i tak zapisuje to sobie jako yyyy-mm-dd ;/
nospor
Po to są funkcję operujące na datach byś sobie tę datę wyświetlał jak chcesz. To w jakim formacie przechowuje je data na dobrą sprawę nie powinno cię w zaden sposób interesować/niepokoic/przyprawiać o koszmary senne* winksmiley.jpg

* niepotrzebne skreślić
skarabe.pl
Jeżeli chodzi o MySQL to osobiście zawsze preferowałem przechowywanie dat w formie timestampów w kolumnach typu INT UNSIGNED. Łatwiejsze w obróbce i mniej niezawodne.
nospor
skarabe.pl nie po to bazy mają pola czasowe byś czas trzymał w INTach. Czas/date trzymaj w polach do tego przeznaczonych - na pewno nie będziesz miał żadnych problemów z ich obróbką.
skarabe.pl
Cytat(nospor @ 11.08.2010, 19:29:25 ) *
skarabe.pl nie po to bazy mają pola czasowe byś czas trzymał w INTach. Czas/date trzymaj w polach do tego przeznaczonych - na pewno nie będziesz miał żadnych problemów z ich obróbką.

Kwestia gustu. Ja miałem dość zastanawiania się, czy format daty zwrócony przez zapytanie będzie "kompatybilny" z formatem używanym przeze mnie w PHP. Timestamp jest uniwersalny - bardzo łatwo go zamienić na datę tekstową, łatwo dodawać, odejmować, porównywać, indeksy i klucze na kolumnach są bardziej oczywiste - bez żadnego kombinowania.
nospor
Cytat
Ja miałem dość zastanawiania się, czy format daty zwrócony przez zapytanie będzie "kompatybilny" z formatem używanym przeze mnie w PHP
Dziwny argument. przeciez baza danych udostępnia ci funkcje, które formatuje wartość czasową do formatu jakiego sobie chcesz. Nie widzę tu żadnego problemu.

Cytat
imestamp jest uniwersalny - bardzo łatwo go zamienić na datę tekstową, łatwo dodawać, odejmować,
Tak samo jak typ czasowy

Cytat
indeksy i klucze na kolumnach są bardziej oczywiste - bez żadnego kombinowania.
A gdzie przy polu datowym musisz kombinować by założyć indeks?

Jedyne kombinowanie jakie widzę to Twoje w tej chwili winksmiley.jpg
erix
Cytat
Timestamp jest uniwersalny - bardzo łatwo go zamienić na datę tekstową, łatwo dodawać, odejmować, porównywać, indeksy i klucze na kolumnach są bardziej oczywiste - bez żadnego kombinowania.

No tak, tylko że przechowując w INT masz już problem, jeśli szukasz rekordów funkcjami daty, np.
  1. WHERE year(date)=2010

zachowując wyłącznie timestamp, musisz przeprowadzać każdorazowo konwersję (albo w desperacki sposób sprawdzać zakres sekund dla danego roku tongue.gif).

A jeśli chodzi o PHP, strtotime w zupełności wystarcza...
rasten
Czyli rozumiem, że w php zamieniam pobraną datę na znacznik czasu a potem formatuje do pożądanego przezemnie? A czy da się to w postgresie zrobić, żeby baza zwracała już odpowiedni dla mnie format? Za bardzo nie widzę takiej funkcji tutaj w manualu ;/ postgres sql date functions
czachor
Użyj funkcji to_char - dla mnie była zawsze wystarczająca.
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.