Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Zapis/odczyt daty i godziny ze zmianą formatu
--Mateusz--
post
Post #1





Goście







Witam, w jaki sposób najlepiej zapisywać i odczytywać datę z pola datetime, tak by wyświetlała się ona w formacie:
Kod
22/07/2011 05:23:45
?

Do odczytu mogę albo użyć:
  1. SELECT DATE_FORMAT()
T już w samym zapytaniu do bazy, albo w PHP
  1. $date = date("d/m/Y H:i:s", strtotime($date));


I jeszcze jedno pytanie: jak zapisywać taki datę z takim formatem do bazy, w której data i czas są w formacie: 2012-07-24 12:09:05 ?


Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Moim zdaniem, lepiej po stronie PHP. Baza i tak ma co robić.

Cytat
I jeszcze jedno pytanie: jak zapisywać taki datę z takim formatem do bazy, w której data i czas są w formacie: 2012-07-24 12:09:05 ?

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





Goście







Ok, dzięki za odpowiedź. Co do TIMESTAMP to datę np. 26/07/2012 07:25:45 mam przekonwertować, a później zapisać do bazy?
Jak już pisałem, w bazie danych pole w której przechowuje czas ma typ datetime.

Próbowałem dane z formularza przerobić na TIMESTAMP, jednak takie coś nie działa:
  1. $timestamp = strtotime('26/07/2012 07:25:45');
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A zobacz sobie, jaki format przyjmuje MySQL. Wszystko jest w dokumentacji.
Go to the top of the page
+Quote Post
--Mateusz--
post
Post #5





Goście







Nie prościej byłoby przez CreateFromFormat http://www.php.net/manual/en/datetime.createfromformat.php ?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Eee, ale to chodzi o MySQL. (IMG:style_emoticons/default/tongue.gif)

Poza tym, z takim formatem strtotime sobie radzi bez problemu.
Go to the top of the page
+Quote Post
--Mateusz--
post
Post #7





Goście







Jeśli chodzi Ci o coś takiego jak tu:
  1. $timestamp = '31/05/2001 12:22:56';
  2. $timestamp = date_create_from_format('d/m/Y H:i:s', $timestamp);
  3. echo date_format($timestamp, 'Y-m-d H:i:s');


to niestety na mojej wersji PHP (5.2.17) to nie działa i zwraca Fatal error: Call to undefined function date_create_from_format()
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Bo to dopiero od ~5.3 jest dostępne.

Ale o co chodzi, przecież strtotime powinno prawidłowo ten format łyknąć.
Go to the top of the page
+Quote Post
--Mateusz--
post
Post #9





Goście







Tak wiem, już o tym wyczytałęm dzisiaj..
Samo:
  1. echo strtotime("26/07/2012 08:27:35");

nic nie zwraca
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. $d = '26/07/2012 08:27:35';
  2. $d = sscanf($d, '%d/%d/%d %d:%d:%d');
  3.  
  4. sprintf('%d-%d-%d %d:%d:%d', $d[2], $d[1], $d[0], $d[3], $d[4], $d[5]);

A jak tego użyć, to Twoja praca domowa.
Go to the top of the page
+Quote Post
--Mateusz--
post
Post #11





Goście







Dzięki wielkie!

zmieniłem %d na %s, bo w stringu działają zera i ten kodzik działa tak jak chciałem:
  1. $d = '21/07/2012 07:27:35';
  2. $d = sscanf($d, '%02s/%02s/%d %02s:%02s:%02s');
  3.  
  4. echo sprintf('%d-%02s-%02s %02s:%02s:%02s', $d[2], $d[1], $d[0], $d[3], $d[4], $d[5]);

(IMG:style_emoticons/default/smile.gif)

Pozdrawiam!
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wiem, że działają zera, ale bez nich strtotime również zachowuje się ok, z tego, co sprawdziłem, a %d działa dużo szybciej niż %s.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:21