Autor Zpráva
mahdawikio
Profil *
Dobrý den, lidičkové.
Stojím před problémem, na jehož vyřešení jsou mé znalosti krátké. Možná je to banalita, ale při řešení obtížných úkolů někdy nejsem schopen vyřešit úkol jednoduchý jednoduchý.

Jde mi to, že mám v databázi MySQL jistá data u kterých je i datum vytvoření (DATETIME). A já potřebuji PHP aplikací vytáhnout data z databáze dle daného datumu.

Prakticky to vypadá tak, že zadám ve formuláři datum OD (1. LEDEN 2010) DO (28. LEDEN 2011). Tato data se převedou na unixový tvar pomocí strtotime. A teď potřebuji vytáhnout všechny záznamy, které spadají do tohoto datového (časového) rozmezí.

Jak co nejefektivněji dotaz provést?

děkuji za nápady a rady.
TomášK
Profil
where datum > $od AND datum < $do
, případně s použitím between.
mahdawikio
Profil *
TomášK:
To jsem schopný vymyslet i sám, ale očividně to asi fungovat nebude. V tom dotazu se ten datum musí převést na UNIXOVý tvar (nebo-li číslo, ne řetězec).
xmark
Profil
mahdawikio:
Nehledáš toto?
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp
ninja
Profil
where datum > FROM_UNIXTIME($od) AND datum < FROM_UNIXTIME($do)
TomášK
Profil
mahdawikio:
Omlouvám se, měl jsem za to, že se konverze provede automaticky a není potřeba to řešit.
mahdawikio
Profil *
No mě jde spíše o to, aby se v tom dotazu převedl datum, který je tahán z databáze, protože tam je ve tvaru YYYY-MM-DD HH-MM-SS a jak ho v tomto tvaru dokáži porovnat s datem z formuláře?
_es
Profil
mahdawikio:
aby se v tom dotazu převedl datum, který je tahán z databáze
To nemáš dátum uložený ako dátum, teda ako dátumový dátový typ?
mahdawikio
Profil *
Problém je vyřešen!

V databázi je sloupec s datumem datového typu TIMESTAMP (YYYY-MM-DD HH:MM:SS)
Pro výběr jsem použil sql dotaz:

$vyber = mysql_query("SELECT * from tabulka WHERE UNIX_TIMESTAMP(CloseTime) > '$od' AND UNIX_TIMESTAMP(CloseTime) < '$do'");


Děkuji všem za nápady a rady.
mahdawikio
Profil *
Tak lidičky.
To bychom měli jeden úkol, ale teď jsem postaven před mnohem složitější.

Potřebuji vybrat z té databáze hodnoty tak, aby se mi v každý týden sečetly.

Například: Součet hodnot, které spadají do 52. týdne minulého roku, dále do 1. týden tohoto roku, atd, atd.
Prostě, vypsat každý týden součet hodnot v tom daném týdnu.

Momentálně to mám následovně, ale je problém s přechodem z roku 2010 do 2011, tam to nebere jako jeden týden (52. týden PO: 27.12.2010 - NE 2.1.2011)
mysql_query("SELECT SUM(ProfitLossInPips) AS ProfitLossInPips, CloseTime from pozice WHERE UNIX_TIMESTAMP(CloseTime) > '$datum_1' AND UNIX_TIMESTAMP(CloseTime) < '$dnes' GROUP BY WEEK(CloseTime, 1) ORDER BY Id_inc DESC");

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: