Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z CURDATE?
Forum PHP.pl > Forum > Bazy danych > MySQL
deha21
Potrzebuję wyciągnąć z bazy wpisy, które w polu DATE mają datę większą bądź równą dwóm miesiącom wstecz. Logicznie zapisałbym to tak:
  1. SELECT * FROM tabela WHERE date>=CURDATE()-60 AND active='1' //bo jeszcze potrzebuję wyciągnąć widoczne wpisy

Próbowałem też date BETWEEN. I najdziwniejsze jest to, że jak sobie wyciągam dane z phpMyAdmin to działa ale jak robię to samo zapytanie na stronie to nie działa. Dodam jeszcze, że datę mam w formacie Y-m-d G:i. Co robię źle?
Crozin
Data nie jest liczbą, więc odejmowanie od niej innej liczby do zbyt logicznych nie należy. wink.gif Słowo klucz: INTERVAL.
Sephirus
Wiem, że to nie wychowawze ale aż się prosi napisać smile.gif

Tak czy owak "pomógł" należy się Crozinowi tongue.gif

  1. SELECT * FROM tabela WHERE date >= NOW() - INTERVAL 60 DAY AND active='1'
deha21
Hmm to dziwne... Dlaczego więc działa to gdy piszę zapytanie w phpMyAdminie?

Tak czy inaczej dzięki. Sprawdzę jak tylko będę miał chwilę, żeby wrócić do kodu.
japolak
jak coś to tu masz ładnie to wyjaśnione Funkcje daty i czasu mysql
deha21
Dzięki jeszcze raz. Nie chcę zakładać nowego tematu ale postanowiłem jednak zmienić zasadę pobierania wpisów. Chcę teraz pobrać wpisy, które są tylko z aktualnego miesiąca. Jak to zrobić? WHERE date=MONTH(NOW()) nie działa wink.gif
Pilsener
Jak zrobić? Myślenie włączyć i korzystać z dokumentacji:
http://dev.mysql.com/doc/refman/5.5/en/dat...-functions.html
Czy w polu "date" masz miesiąc czy całą datę? Musisz wyciągnąć z pola "date" by go porównać z biężacym miesiącem.

Rób sobie coś w stylu:
  1. SELECT month(date), month(now()), month(curdate()), //?


To się nauczysz wink.gif
Sephirus
Pilsener zmusił Cię do myślenia i ma rację wink.gif Ale podpowiem jedynie, że jeśli chcesz dosłownie aktualny miesiąc to nie wystarczy wybrac daty gdzie miesiąc równa się czerwiec - ale te w których miesiąc to czerwiec a rok 2012.... wink.gif
deha21
Cytat(Sephirus @ 5.06.2012, 14:22:03 ) *
Pilsener zmusił Cię do myślenia i ma rację wink.gif Ale podpowiem jedynie, że jeśli chcesz dosłownie aktualny miesiąc to nie wystarczy wybrac daty gdzie miesiąc równa się czerwiec - ale te w których miesiąc to czerwiec a rok 2012.... wink.gif

Słuszna sugestia wink.gif A pewnie bym to przeoczył i zauważył dopiero za jakiś czas wink.gif

Dla potomnych wink.gif
  1. SELECT * FROM tabelka WHERE MONTH(date)=MONTH(CURDATE()) AND YEAR(date)=YEAR(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.