Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Data w PHP i w Mysql
Ravik
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 3
Dołączył: 8.05.2009

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


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
Go to the top of the page
+Quote Post
toffiak
post
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


DATE_FORMAT
Go to the top of the page
+Quote Post
tehaha
post
Post #3





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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()


Ten post edytował tehaha 31.07.2012, 13:26:29
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: 2.10.2025 - 23:26