Autor | Zpráva | ||
---|---|---|---|
T-fon Profil |
#1 · Zasláno: 19. 11. 2017, 08:32:13
Ahoj, potřeboval bych poradit s podmínkou:
WHERE year(datum) = year(CURRENT_DATE - interval 1 week) AND week(datum) = week(CURRENT_DATE - interval 1 week) |
||
nejdesemiprihlasit Profil |
Upřímně nevím jestli je dobrý nápad dávat příklady při mysql doporučuji vše definovat mimo.
Skus vypsat všechny výsledky a pak je filtrovat. Není to nejlepší řešení, ale pro začátek stačí. Pro příkad můj script na podporu. //definice $addons_Contact_mails=@mysqli_query($spojeni,"SELECT * FROM `Mails` ORDER BY `time` DESC"); $assoc_mails = mysqli_fetch_assoc($addons_Contact_mails) $etime = time() - $week; $week = strtotime( /*jeden týden ve stringovém zápisu nevím jak to teď je! - asi*/ "1 week" ) //výpis while ($row = $assoc_mails){ if ($row[time] >= $etime){ echo ' <tr> <td><a href="" class="btn btn-default btn-sm"><i class="fa fa-trash-o"></i></a></td> <td class="mailbox-star"><a href="#"><i class="fa fa-star'; if ($row["star"] == 0){ echo '-o'; } echo ' text-yellow"></i></a></td> <td class="mailbox-name"><a href="read.php?id='.$row["id"].'&todo=read">'.$row["name"].'</a></td> <td class="mailbox-subject">'.$rows.'...</td> <td class="mailbox-attachment"><i class="fa fa-paperclip"></i></td> <td class="mailbox-date">'.get_timeago(strtotime($row["time"])).'</td> </tr>'; } } } |
||
T-fon Profil |
#3 · Zasláno: 19. 11. 2017, 11:39:04
Nejde mi o to vypsat záznamy max. týden starý od teď (to je jednoduchý), ale za minulý kalendářní týden.
|
||
juriad Profil |
#4 · Zasláno: 19. 11. 2017, 12:05:36
T-fon:
Tak si to v PHP vypočti a pak dosaď od a do přímo do dotazu. Dotaz v Mysql bych nekomplikoval výpočty. Mimochodem, porování s WEEK nebude fungovat dobře na hranici rokku. $start = new DateTime('last week Monday'); $end = new DateTime('this week Monday'); echo "datum >= '" . $start->format("Y-m-d H:i:s") . "' AND datum < " . $end-> format("Y-m-d H:i:s") . "'"; Všimni si, že se nesnažím porovnávat s minulou nedělí, ale raději s tímto pondělím. Jinak bys buď musel mít datum jako DATE nebo ho porovnávat přetypovaný na DATE, což by zpomalovalo. Aby toto fungovalo, musíš mít reativně novou verzi PHP: >= 5.6.23, nebo >=7.0.8. S nižší verzí může považovat za začátek týdne neděli, což v neděli bude dávat špatné výsledky (podle našich zvyklostí). Možná to závisí na Locale? Vic v dokumentaci php.net/manual/en/datetime.formats.relative.php nejdesemiprihlasit: To, že něčoho nejsi schopný neznamená, že je dobrý nápad radit stejně i ostatním. |
||
T-fon Profil |
#5 · Zasláno: 19. 11. 2017, 13:49:23
Díky moc. Mám na Locale nějakou 7.1. Otestuju zítra, mám tam data jen z tohoto týdne :).
|
||
Keeehi Profil |
#6 · Zasláno: 19. 11. 2017, 18:45:26
juriad:
„S nižší verzí může považovat za začátek týdne neděli“ V nižších verzích určitě půjde od dnešního dne odečítat postupně po dnech a kontrolovat, zda je ten den pondělí. Tím se nalezne pondělí tohoto týdne. Pak už stačí odečíst sedm dní. |
||
Časová prodleva: 7 let
|
0