Autor | Zpráva | ||
---|---|---|---|
liquidfunk Profil * |
#1 · Zasláno: 23. 9. 2012, 01:33:34
Mám tabulku (id, od, do, info) a potřeboval bych vypsat seznam datumů odpovídající rozsah, bez toho, aby se záznamy opakovaly. Poradil by někdo, jestli se dá výběr udělat pomocí SELECTU, nebo je potřeba použít PHP?
Příklad 2012-09-21 2012-09-24 2012-09-20 2012-09-23 2012-09-23 2012-09-25 2012-09-28 2012-09-28 Výsledek výpisu 2012-09-21 2012-09-22 2012-09-23 2012-09-24 2012-09-25 2012-09-28 |
||
liquidfunk Profil * |
#2 · Zasláno: 23. 9. 2012, 10:14:22
* Používám databázi MySQL 5.5.
|
||
Taps Profil |
#3 · Zasláno: 23. 9. 2012, 10:36:24
liquidfunk:
pokud by se jednalo o datumy v jednom sloupečku tak řešení by bylo následující select * from knihy where od between 2012-09-21 and 2012-09-28 group by od |
||
liquidfunk Profil * |
#4 · Zasláno: 23. 9. 2012, 10:57:30
Jde o to, že potřebuji vypsat interval jednotlivých datumů, které se mohou vzájemně překrývat.
Zatím jsem zkoušel něco takového, ale nevím si s tím rady: SELECT DISTINCT * FROM `item_dates` WHERE CURDATE() BETWEEN `date_from` AND `date_to` ORDER BY `row_number` |
||
liquidfunk Profil * |
#5 · Zasláno: 23. 9. 2012, 16:11:14
Tak SELECT se mi nepodařil, zkouším vypsat data přes PHP. Potřeboval bych poradit, jak ošetřit nevypisování stejných dat.
function getDatesList($startTime, $endTime) { $format = 'Y-m-d'; $startTime = strtotime($startTime); $endTime = strtotime($endTime); $numDays = round(($endTime - $startTime) / 86400) + 1; $days = array(); for ($i = 0; $i < $numDays; $i++) { $days[] = date($format, ($startTime + ($i * 86400))); } return $days; } while($row = mysql_fetch_array($result)) { $date_from = $row['date_from']; $date_to = $row['date_to']; $days = getDatesList($date_from, $date_to); foreach($days as $key => $value){ echo $value . '<br />'; } Výsledek 2012-09-19 2012-09-20 2012-09-21 2012-09-20 2012-09-21 2012-09-22 2012-09-23 2012-09-21 2012-09-22 2012-09-23 2012-09-24 2012-09-22 2012-09-23 2012-09-24 2012-09-25 2012-09-28 2012-09-29 2012-09-30 Záznamy z DB (od - do) 2012-09-19 2012-09-21 2012-09-20 2012-09-23 2012-09-21 2012-09-24 2012-09-22 2012-09-22 2012-09-23 2012-09-25 2012-09-28 2012-09-30 |
||
Taps Profil |
#6 · Zasláno: 23. 9. 2012, 16:19:02
|
||
Časová prodleva: 12 let
|
0