ďťż

Ładny brzuch

Potrzebuje przechować datę w bazie MySql. Sposobów jest wiele, ale ja chciałbym żeby data była przechowywana jako liczba sekund od 01-01-1970, czyli to co zwraca funkcja time() (w PHP). Można by przechowywać taką liczbę jako INT, ale to takie mało eleganckie więc znalazłem info, że służy do tego typ TIMESTAMP.

Problem w tym, że jak podaję jako wartość pola liczbę (np. 1214986274) to mi wywala błąd "Incorrect datetime value". Dlaczego !? A skoro tak się dzieje, to jaki typ powinno mieć to pole (oprócz int), żeby można było zastosować w zapytaniu bezpośrednio to, co zwróci funkcja time() (czyli liczbę np. 1214986274) ?
Użytkownik oggylwiatko edytował ten post 02 lipiec 2008, 11:34


W polu typu timestamp przechowuje się znacznik czasu w formacie "RRRR-MM-DD GG:MM:SS". Jeżeli zaś chcesz pobrać datę w formacie uniksowym, to używasz funkcji unix_timestamp.

// Dodano
Definicje i przykłady znajdziesz w manualu.

Przechowuj uniksowy znacznik czasu jako INT. Ewentualnie pełną datę jako DATETIME.

Doszedłem do wniosku, że jednak int będzie najlepszy i nie ma co kombinować bo funkcja data() i tak nie obsługuje liczb większych niż int ze znakiem (przynajmniej w moim parserze).

PS. Właśnie zauważyłem, że w złym dziale napisałem temat, więc przepraszam.



Podpinam się pod temat bo mam podobny problem.

W MySQL chcę przechować datę w formacie UNIX-owym (mam na myśli to co zwraca funkcja time()) z tym, że pole ma dodatkowo parametr NOT NULL a wartością domyślną ma być aktualna data. Poczytałem MySQL-owego manuala i powstała taka deklaracja pola data:
data TIMESTAMP NOT NULL default CURRENT_TIMESTAMP
Tylko, że w efekcie w polu data otrzymuję datę w formacie YYYY-MM-DD HH:MM:SS, a miała być liczba sekund :/

CURRENT_TIME <_<

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •