Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Data w PHP i w Mysql
Forum PHP.pl > Forum > PHP
Ravik
Witam,

Chcę napisać skrypt który będzie ustawiał mi nieaktywne rekordy jeżeli data jest starsza, niż ta, którą mamy dzisiaj. Próbowałem w ten sposób:

  1. $expire = strtotime(date('d-m-Y'))+24*60*60;
  2. $query = mysql_query("SELECT data FROM queries;");
  3. while($row = mysql_fetch_array($query)) {
  4. mysql_query("UPDATE wydarzenia SET aktywne = 0 WHERE data < $expire");
  5. }


Układ daty w bazie mam ułożony w sposób: dd-mm-rrrr. Próbowałem też zapytaniem:

  1. $query = mysql_query("SELECT data FROM queries WHERE data < CURDATE();");
  2. }


Jednak to też nic nie dało. Da się jakoś w MySQL ustawić format wybieranej daty? Tzn. żebym mógł w zapytaniu określić, że ma wybierać rekordy starsze niż obecna data (na dzień dzisiejszy 31-07-2012) i aby CURDATE zwracało datę w tym samym układzie tj. dd-mm-rrrr?

Bardzo chętnie posłucham też o możliwości innego rozwiązania, jednak modyfikacja dat w bazie nie wchodzi w rachubę.

Pozdrawiam,
Ravik
toffiak
DATE_FORMAT
tehaha
najlepiej dodaj dodatkową kolumnę z odpowiednio przechowywaną datą bo rozumiem, że teraz przechowujesz ją w kolumnie typu VARCHAR i z tym cały czas będziesz miał problemy i będziesz zmuszony implementować dziwaczne rozwiązania. Tutaj problem leżey w tym, że Twoja data nie jest traktowana jako data tylko jako string, więc nawet jak by CURDATE() zwracał inny format to i tak Ci nie pomoże. Jeżeli nie możesz przerobić tego co masz to dorzuć kolejną kolumnę typu timestamp, datetime lub date, wtedy wszystko będzie śmigać.

Jeżeli proponowany przez @toffiak DATE_FORMAT() nie zadziała, to możesz jeszcze spróbować STR_TO_DATE() http://dev.mysql.com/doc/refman/5.5/en/dat...ion_str-to-date

coś takiego:
  1. SELECT DATA FROM queries WHERE STR_TO_DATE(DATA,'%d-%M-%Y') < CURDATE()
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.