Autor | Zpráva | ||
---|---|---|---|
bach Profil |
#1 · Zasláno: 24. 11. 2017, 12:12:23
Dobrý den, mám bohužel v databázi uložen datum a čas odděleně, každý ve své buňce. Lze nějak najít záznam odpovídající tomuto zadání: vypiš všechny záznamy od aktuálního času mínus 15h , čili všechny záznamy co byly přes 15 hodinami po nyní? děkuji.
|
||
Tomášeek Profil |
bach:
Dát datum a čas do sloupce datetime je ideální řešení, proč tabulku neupravíš a záznamy nepřeuložíš tak, jak mají být? Data jde vydolovat i se dvěma sloupci, budeš muset vědět, jaký je aktuální čas. 1. Pokud více jako 15:00, hledáš záznamy jen ze dnešního dne, max. 15 hodin staré. 2. Pokud je méně než 15:00, bereš všechny dnešní a ze včerejška ty, aby to bylo max. do 15 hodin staré (čili první včerejší záznam bude 24:00 - (15:00 - 14:14))... 23:14. Přepodčítat to budeš muset asi v PHP, nevím, jestli to půjde na úrovni DB. |
||
Kajman Profil |
#3 · Zasláno: 24. 11. 2017, 15:36:45
SELECT * FROM tabulka WHERE ( datum = Date(Subdate(Now(), INTERVAL 15 hour)) AND cas >= Time(Subdate(Now(), INTERVAL 15 hour)) OR datum > Date(Subdate(Now(), INTERVAL 15 hour)) ) Případně mysql umí pro lidi čitelnější zápis WHERE ( datum, cas ) >= ( Date(Subdate(Now(), INTERVAL 15 hour)), Time(Subdate(Now(), INTERVAL 15 hour)) ) |
||
Časová prodleva: 3 dny
|
|||
bach Profil |
#4 · Zasláno: 27. 11. 2017, 08:27:44
Kajman:
Děkuji to je přesně ono, funguje v mariadb i druhý jednoduchý zápis, ještě jednou díky. |
||
Kajman Profil |
#5 · Zasláno: 27. 11. 2017, 15:13:02
Co o to, on funguje, ale v popsané situaci může být výrazně pomalejší než první zápis. Porovnáváno na MariaDB 10.2 - když uděláte nad tou kombinací sloupců index, tak to první dotaz zrychlí, druhý zpomalí.
Pokud ten dotaz chcete dělat často a je dobré ho mít rychle, použijte první zápis a udělejte si ten index. |
||
Časová prodleva: 6 let
|
0