Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> data dodania tekstu, problem z zastosowaniem funkcji
MalyKazio
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Witam.

Pytanie może i banalne ale przejrzeniu manuala do mySql i php jestem trochę zagubiony. zrobiłem prosty formularz dodający pare danych do bazy. Chciałem dodać jeszcze pole w bazie, w którym zapisana będzie data dodania tekstu (tylko data - dzien-miesiac-rok). Czy w związku z tym ustawić dla tej kolumny tabeli rodzaj na DATE czy zostawić np VARCHAR? Której funcji php użyć do wyciągnięcia daty? date czy może time i zapisać w bazie te sekundy od 1970 r?
Możecie coś poradzić żeby nie było żadnych problemów na linii php-mysql?


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Pole w bazie powinno być typu DATE
Funkcja MySQL do daty obecnej: NOW()
Go to the top of the page
+Quote Post
MalyKazio
post
Post #3





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Hmm... coś mi nie wyszło z tym NOW(). Chyba najłatwiej byłoby wykorzystać timestamp, czy jak to się nazywa. Chodzi mi o te sekundy od 1970 r. Czy obojętne jest w jakego typu polu bazy będę przechowywał timestamp? Chyba to rozwiązanie jest najbardziej elastyczne i pozwala na wyświetlanie daty w różnych formatach.


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
TomASS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Czytaj proszę ze zrozumieniem to co mike napisał:
Cytat
Pole w bazie powinno być typu DATE

Będziesz miał w nim date w postaci np. 2006-06-16

Dalej przy dodawaniu tekstu, zapytanie możesz skonstruować tak:
  1. INSERT
  2. INTO `zlecenia`
  3. ( `tekst`,`pole_data` ) VALUES ('jakis_tekst',NOW());

Wtedy w "pole_data" zostanie wpisana bierząca data. Później aby wyciągnąć ją z bazy w dowolnym formacie użyj DATE_FORMAT:
  1. SELECT DATE_FORMAT(`pole_data`,'%e.%m.%Y')AS DATA
  2. FROM `zlecenia`;


Masz to co chciałeśsmile.gif


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





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 6.02.2004

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


Odświeżę temat bo mam podobny problem.

Datę dodania wpisu do bazy chcę trzymać w postaci uniksowego znacznika czasu tak aby sobie wyciągać tą datę do rss'a. Ale gdy trzymamy datę w polu DATE i ma ona format y-m-d to chyba nie jest przechowywana w nim godzina.


--------------------
generalfailure
fabrykadrobiu*dot*com
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale gdy trzymamy datę w polu DATE i ma ona format y-m-d to chyba nie jest przechowywana w nim godzina.
Masz rację smile.gif Ale jakie masz pytanie w związku z tym?
Jak chcesz miec i godzine to zaloż pole typu DATETIME lub TIMESTAMP


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 6.02.2004

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


Hmm no niby tak, ale timestamp to nie to samo co czas unixa.

Uparłem się na ten czas unixa, bo teraz mam daty w formacie d-m-y i mam już metodę jak je wszystkie pozamieniać. Chyba nie ma specjalnego datatypu dla czasu unixa więc pozostaje mi go trzymać pod tinytextem.

Czy źle myślę?


--------------------
generalfailure
fabrykadrobiu*dot*com
Go to the top of the page
+Quote Post
MalyKazio
post
Post #8





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Cytat
Wtedy w "pole_data" zostanie wpisana bierząca data. Później aby wyciągnąć ją z bazy w dowolnym formacie użyj DATE_FORMAT:
  1. SELECT DATE_FORMAT(`pole_data`,'%e.%m.%Y')AS DATA
  2.  
  3. FROM `zlecenia`;


Wszystko dziala. Mam jednak pytanie. Co zrobić, żeby oddzielnie wyciągnąć dzien, miesiac i rok, żeby każda ta rzecz była w innej zmiennej zapisana? Trzeba robić trzy zapytania np.

  1. SELECT DATE_FORMAT(`pole_data`,'%e')AS DATA
  2. FROM `zlecenia`;

a potem drugie z zamienionym %e na %m? Moze da sie to w jednym zapytaniu zrobic?


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
babejsza
post
Post #9





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

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


  1. SELECT
  2.  
  3. DATE_FORMAT(`pole_data`,'%e')AS day,
  4. DATE_FORMAT(`pole_data`,'%m')AS month,
  5. DATE_FORMAT(`pole_data`,'%Y')AS year
  6. FROM `zlecenia`
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: 19.08.2025 - 04:57