Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zamiana ciagu liczb na date
Forum PHP.pl > Forum > Przedszkole
jaco1410
Hej,

importuje plik csv do bazy mysql, niestety w pliku data jest w formacie: 20140127, więc do bazy trafia w formacie: 0000-00-00 a
chciałbym aby w bazie była w formacie daty.

jakieś podpowiedzi jak to zrobić, nie musi być w locie, może być póżniej skryptem zamieniane.

dzięki
pozdrawiam
matiit
  1. date('Y-m-d', strtotime('20140127'));
jaco1410
A masz może jakiś pomysł aby zoptymalizować ten kod poniżej, rekordów w bazie jest ok 6000, i oczywiście php wywala błąd przekroczenia czasu(standardowo 30sec), ale po 2 min. to samo smile.gif

  1. $sql02 = "SELECT * FROM stock";
  2. $result02 = mysql_query($sql02) or die(mysql_error());
  3. while($row02 = mysql_fetch_array($result02)){
  4. $data = date('Y-m-d', strtotime($row02[stock_tmp_cn_date]));
  5. $sql03= "UPDATE stock SET stock_cn_date='$data' WHERE stock_id='$row02[stock_id]'";
  6. $result03=mysql_query($sql03);
  7. }



dzięki
pozdrawiam
matiit
Pierwsza rzecz to Zamiast SELECT * pobieraj tylko te kolumny, które wykorzystujesz.

Kolejna rzecz którą możesz zrobić to niech program najpierw wygeneruje wszystkie UPDATE'y, sklei je stawiając ; pomiędzy kolejnymi UPDATE'ami i na koniec wykonać wszystkie SQLe na raz:
http://us2.php.net/manual/en/mysqli.multi-query.php
jaco1410
Hej,

nie mam pomysłu jak wygenerować wszystkie UPDATE`y, nie mówiąc o ich sklejeniu i postawieniu ;,
jakaś podpowiedź ?
mmmmmmm
Skoro masz syf w pliku, to aby nie "zepsuć sobie bazy" zaimportuj to do NOWEJ tabeli, tak by wszystko sie zaimportowało poprawnie za pomocą LOAD DATA, bo to najszybszy sposób. Potem sobie z jednej tabeli do drugiej przerzucisz prostym SQLem.
nospor
Cytat(jaco1410 @ 6.02.2014, 20:29:29 ) *
A masz może jakiś pomysł aby zoptymalizować ten kod poniżej, rekordów w bazie jest ok 6000, i oczywiście php wywala błąd przekroczenia czasu(standardowo 30sec), ale po 2 min. to samo smile.gif

  1. $sql02 = "SELECT * FROM stock";
  2. $result02 = mysql_query($sql02) or die(mysql_error());
  3. while($row02 = mysql_fetch_array($result02)){
  4. $data = date('Y-m-d', strtotime($row02[stock_tmp_cn_date]));
  5. $sql03= "UPDATE stock SET stock_cn_date='$data' WHERE stock_id='$row02[stock_id]'";
  6. $result03=mysql_query($sql03);
  7. }



dzięki
pozdrawiam

Zamiast tego calego kodu php, wszystko nalezy zrobic tylko jednym zapytaniem SQL
  1. UPDATE stock SET stock_cn_date = DATE_FORMAT(stock_tmp_cn_date, '%Y-%m-%d');

I juz. Sekunda roboty i po sprawie.
jaco1410
Dzięki nospor, o to chodziło, możesz polecić jakąś książkę gdzie takiej tajemnej wiedzy można nabyć smile.gif

pozdrawiam.
nospor
Manual mysql. A ta tajemna wiedza o ktora pytasz to podstawy mysql wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.