Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> data i mysql, pytanie
piczu
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

Ostrzeżenie: (10%)
X----


robie szablon z obsluba newsow i zastanawiam sie jak mam uzyskiwac date w php abym mogl ja pozniej zapisac w MySQL, zauwazylem ze data w bazie nie jest jest zapisywana w formacie unix'owym. Moze mozna to jakos zmienic ?
Potrzebuje;
odczyt daty w php => zapis daty w mysql
odczyt daty w mysql => zapis daty w php
jak bedzie najprosciej ?
z gory dziekuje za pomoc.


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


W MySQLu masz timestamp, to jak bedziesz wyswietlal to juz jest Twoja sprawa, konwetujesz date do takiej postaci jaka Ci pasuje.


--------------------
Go to the top of the page
+Quote Post
piczu
post
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

Ostrzeżenie: (10%)
X----


hmm u mnie data w mysql przedstawia sie tak : 20050416231406, zadeklarowane jako timestamp(14), ale to nic nie ma wspolnego z data w unix, ktora odlicza czas od 1970, no i nie moge jej uzyc do strftime albo cos podobnego.


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Chodzilo mi o pole timestamp


--------------------
Go to the top of the page
+Quote Post
piczu
post
Post #5





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

Ostrzeżenie: (10%)
X----


aha czyli zrobic pole timestamp jak int ?


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
SongoQ
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Tak wiekszosc baz danych posiada takie pole, jesli nie to pole data i wtedy podczas dodawnia i wyciagania z bazy konwertowanie. W Twoim przypadku uzyl bym timestampa


--------------------
Go to the top of the page
+Quote Post
yavaho
post
Post #7





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Ja najczesciej przechowuje date w bazie MySQL w polu CHAR(10) w postaci sekundowej
  1. <?php
  2. $data=time();
  3. //$data > zapis do bazy w postaci: CHAR(10)
  4. //$row['data'] < odczyt z bazy 
  5. echo(gmdate('Y-m-d H:i', $row['data']+7200));
  6. ?>


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
piczu
post
Post #8





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

Ostrzeżenie: (10%)
X----


jak dobrze licze to w char zajmuje ci to 10 bajtow a w int tylko 4.

Ten post edytował piczu 16.04.2005, 22:52:05


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


@yavaho Wydaje mi sie ze to jest nie prawidlowe, poniewaz stworzono typy pol zeby trzymac odpowiednie danem, char jak nazwa wskazuje przechowywane sa dane, timestamp unixowy zapis czasu od wiadomo jakiej daty, format jest stalu i szybciej dziala przy wuciaganiu, inaczej struktura jest zorganizowana. Jesli trzymasz juz w bazie sekundy to lepiej uzyc inta. Kiedys dopadlem jakas ksiazeczke wlasie o typach pol i ich przeznaczeniu i autor podawal przyklady jak moze spasc szybkosc zapytania dla niewlasciwych uzyc pol, a wiadomo lepiej jak sie zapytanie wykonuje 0,50s niz 5s


--------------------
Go to the top of the page
+Quote Post
yavaho
post
Post #10





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Dalem ten przyklad jako alternatywe do innych typow danych przechowywania daty w MySQL. Czasem taki sposob jest bardzo wygodny w dodatku zmiejsza ilosc przeprowadzanych operacji przez php, ale oczywiscie w konkretnych z gory zaplanowanych projektach. Ale znowu ten sposob wyklucza prawie calkowicie operacje przeprowadzane na dacie przez MySQL.
A co do ilosci zajetych bajtow to w tym przypadku jest to 10. Aby przechowac date w formacie sekundowym trzeba uzyc DATETIME (8 bajtow) lub TIMESTAMP (4 bajty) ale z ograniczeniem od 1970r. do 2037r. W INT nie pomiesci sie data w formacie sekundowym, trzeba uzyc BIGINT (8 bajtow).
Format CHAR nie jest idealnym rozwiazaniem jezeli chodzi o wydajnosc bazy danych, ale w pewnych przypadkach nie mozna znalezc innego wyjscia.


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
piczu
post
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

Ostrzeżenie: (10%)
X----


zrobilem przy pomocy inta i sa tez sekundy.int bez znaku jest z przedzialu 0 do 4 294 967 295 wiec nie ma problemu z tym do roku 2038 smile.gif.


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:16