Ĺ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
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 <_<