Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]wybranie rekordu z zakresu
Forum PHP.pl > Forum > Przedszkole
nikestylex7
Witam. Potrzebuje pobrać rekordy z bazy według przykładu

  1. mysql_query("SELECT x FROM y WHERE dataczas < '$data' AND dataczas>'$data1' GROUP BY x");


wszystko działa lecz jako zakres używam zmiennych a w nich to

  1. $data = date('Y-m-d 23:59:59');
  2. $data1= date("Y-m-d H:i:s");


czyli po prostu pobieram datę z danego dnia lecz żeby czas tego zdarzenia nie minął. Chciałbym też pobrać rekordy z jutra tylko i wyłącznie przykład niżej
  1. $dataa=date("Y-m-d 00:00:01");
  2. $dat = date('Y-m-d 00:00:01', strtotime('+1 day', strtotime($dataa)));
  3. $dat2 = date('Y-m-d 00:00:01', strtotime('+2 day', strtotime($dataa)));
  4. $czass = mysql_fetch_assoc(mysql_query("SELECT * FROM x WHERE dataczas<'$dat2' ORDER BY dataczas DESC LIMIT 1 "));


Ogólnie moje pytanie brzmi czy nie można jakoś ominąć php i pobrać to z zakresem w formie zapytania sql?
mmmmmmm
  1. SELECT * FROM x WHERE date(dataczas) BETWEEN date(now()) AND date_add(date(NOW) interval 1 day)
nikestylex7
i to jest do daty tylko na jutro ? a tylko na dzisiaj ?
matiit
To jest od dziś do jutra
  1. SELECT * FROM x WHERE date(dataczas) BETWEEN date(now()) AND date_add(date(NOW) interval 1 day)

  1. SELECT * FROM x WHERE date(dataczas) <= date(now()


Do dziś
nikestylex7
jedno do dzisiaj od rana do wieczora 24h , a drugie od jutra rano do wieczora czyli tylko 24h

coś twój kod daje niepożądany efekt. Wytłumaczę jeszcze raz.
Potrzebuje do podstrony dzisiejsze potrzebuje pobrać spotkania sportowe na dzisiaj czyli od 0:00:01 sek do północy lecz tylko te które się jeszcze nie wydarzyły czyli muszą być powyżej teraźniejszego czasu.

Do jutrzejszych potrzebuje spotkania sportowe które są od jutra rana 0:00:01 sek do północy.

chciałbym to robić za pomocą mysql a nie tak jak wyżej ustalaniem zmiennych w php
mmmmmmm
Potrzebujesz po prostu te, które są z przedziału od 2013-04-26 00:00:00 do 2013-04-26 23:59:59.
Czyli te, których DATA jest równa 2013-04-26.
Date(dataczas)= Date($podana_data_byle_jaka_by_nie_byla)
nikestylex7
dokładnie z danego dnia czyli np do dzisiaj wszystko z 26.04.2013 i z jutra 27.04.2013

tylko napotkałem następny problem gdyż każde spotkanie zapisywane jest do bazy tak
  1. $data = date('Y-m-d H:i:s');


To gdy wezmę wszystko z danego dnia czyli

  1. "SELECT * FROM spotkania WHERE dataczas = '$data'"


znajduje 0 a jest jeden taki
r4xz
  1. "SELECT * FROM spotkania WHERE dataczas = '$data'"


ok, ale:
- $date jest w formacie Y-m-d
- dataczas musi być sprowadzona date formatem także do Y-m-d

---edit---
jeśli $date jest statyczne (przykładowo 'dzisiaj') to też warto to z np. curdate zrobić
nikestylex7
data w bazie jest w formacie takim Y-m-d H:i:s czyli jakbym wziął zrobił
  1. "SELECT * FROM spotkania WHERE DATE_FORMAT(dataczas, 'Y-m-d') = '$data'"


było by ok?
r4xz
ehh... specjalnie dałem link (DATE_FORMAT, patrz. Specifier)
Kod
%Y-%m-%d
nikestylex7
ok już mam do dzisiaj jest tak
  1. "SELECT count(*) FROM spotkania WHERE DATE_FORMAT(dataczas, '%Y-%m-%d') = '$data' AND dataczas>'$data2' "


a jak zrobić na jutro czyli dzisiejsza data + 1 dzien

kombinuje z strtotime i + 1 day lecz nic nie wychodzi

ok udało się dałem radę
r4xz
Bez pomocy PHP:
1. dzisiaj
  1. SELECT ... FROM ... WHERE DATEDIFF(`dataczas`,CURDATE()) = 0;

2. jutro
  1. SELECT ... FROM ... WHERE DATEDIFF(`dataczas`,CURDATE()) = -1;


Pisane od ręki, mam nadzieję, że w drugim przykładzie nie pomyliłem się co do -1/1 smile.gif
nikestylex7
dzieki wielkie o to chodziło już nie ma żadnych zmiennych
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.