Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Poprawność zapytania MySQL
Forum PHP.pl > Forum > Bazy danych
trifek
Witam serdecznie,
Mam taki kod:
  1. $aktualny_czas = date("Y-m-d H:i:s");
  2. SELECT gt_id, tytul FROM cms_push WHERE datarozeslania > '$aktualny_czas' and data_konca_rozsylania < '$aktualny_czas'


datarozeslania - data OD kiedy rozpoczynamy rozsyłanie wiadomości
data_konca_rozsylania - data KOŃCA rozsyłania

Kolumny w tabeli: data_konca_rozsylania, datarozeslania są typu datetime.

Czy powyższe zapytanie jest poprawne?


Dziękuję bardzo za pomoc smile.gif
viking
Zamiast tego możesz użyć natywną funkcję NOW()
trueblue
Żadnego rekordu zapytanie nie wybierze. Chyba, że takie gdzie datarozeslania jest większa od data_konca_rozeslania.
Jakie rekordy chcesz wybrać?
trifek
chcę żeby mi to zawsze zwracało rekordy które powinni być rozesłane (czyli data i czas większa od datarozeslania) - ale też "teraz" nie może przekroczyć daty końca rozsyłania (data_konca_rozsylania) smile.gif
Nie wiem czy zrozumiale to napisałem?
trueblue
TERAZ>=datarozeslania AND TERAZ<=data_konca_rozsylania

Jeśli będziesz podstawiał datę w postaci stringa, zapytanie zacacheuje się, w przypadku NOW(), nie.

trifek
Czyli coś takiego:
  1. SELECT gt_id, tytul FROM cms_push WHERE NOW() >= datarozeslania AND NOW() <= data_konca_rozsylania


questionmark.gif smile.gif
trueblue
Sprawdź.
franki01
Znaki większości mają kluczowe znaczenie. W pierwszym poście są zwrócone w złą stroną, w poście powyżej są użyte poprawnie. Co do NOW() - nie ufaj temu w 100%, jeśli nie poleciłeś wcześniej MySQL użycie poprawnej strefy czasowej. Najprościej będzie, jeśli weźmiesz zapytanie z pierwszego posta i oba znaki większości zamienisz w drugą stronę.

Przepraszam @trueblue, że napisałem to samo, ale chyba nie lubisz pisać wprost smile.gif
viking
Do PHP to samo się odnosi. Bez konfiguracji default timezone tak samo błędny czas będzie zwracany.
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.