Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]wybranie rekordu z zakresu
nikestylex7
post
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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?

Ten post edytował nikestylex7 25.04.2013, 21:00:12
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT * FROM x WHERE date(dataczas) BETWEEN date(now()) AND date_add(date(NOW) interval 1 day)
Go to the top of the page
+Quote Post
nikestylex7
post
Post #3





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


i to jest do daty tylko na jutro ? a tylko na dzisiaj ?
Go to the top of the page
+Quote Post
matiit
post
Post #4





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


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ś
Go to the top of the page
+Quote Post
nikestylex7
post
Post #5





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


  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ć

Ten post edytował r4xz 26.04.2013, 21:30:15
Go to the top of the page
+Quote Post
nikestylex7
post
Post #9





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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?
Go to the top of the page
+Quote Post
r4xz
post
Post #10





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


ehh... specjalnie dałem link (DATE_FORMAT, patrz. Specifier)
Kod
%Y-%m-%d
Go to the top of the page
+Quote Post
nikestylex7
post
Post #11





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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ę

Ten post edytował nikestylex7 26.04.2013, 22:37:24
Go to the top of the page
+Quote Post
r4xz
post
Post #12





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nikestylex7
post
Post #13





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


dzieki wielkie o to chodziło już nie ma żadnych zmiennych
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: 22.08.2025 - 18:10