Je-li rovnost v where podmínce nevrátí se nic

Username
Člen | 36
+
0
-

Ahoj,

chtěl bych se zeptat, proč dotaz z touto podmínkou nevrátí řádky ve kterých je aktuální datum roven datům ve sloupci zacatek?

->where('zacatek >= ?', date('Y-m-d'))

Díky za pomoc

Mysteria
Člen | 797
+
0
-

Když zkusíš pustit vygenerovaný dotaz ručně nad databází, tak ti něco vrátí?

Editoval Mysteria (13. 5. 2018 16:15)

Username
Člen | 36
+
0
-

Právě že vrátí 0 řádků, přitom v tabulce jsou i řádky z dnešním datem.

Mysteria
Člen | 797
+
0
-

Jak vypadají hodnoty v tom sloupci zacatek?

Username
Člen | 36
+
0
-

2018–05–13 09:00:00

Mysteria
Člen | 797
+
0
-

Tak to je jasný, když tam máš i čas, tak ti nebude fungovat porovnání jenom s datumem, protože přece 2018–05–13 09:00:00 !== 2018–05–13. Takže upravit třeba na ->where('DATE_FORMAT(zacatek, "<format>") = ?', date('Y-m-d')). Formát pak najdeš tady.

nightfish
Člen | 518
+
0
-

Mysteria napsal(a):
Tak to je jasný, když tam máš i čas, tak ti nebude fungovat porovnání jenom s datumem, protože přece 2018–05–13 09:00:00 !== 2018–05–13.

Username pro porovnání používal operátor >=. A nerovnost 2018-05-13 09:00:00 >= 2018-05-13 je pravdivá. Viz sqlfiddle

Problém tedy nejspíš bude v něčem, co nám Username neukazuje (třeba že skript, ve kterém je kód, pracuje s jinou databází, než ve které zkoušel kód spustit ručně).

EDIT: (až dodatečně jsem si všimnul slova rovnost v názvu otázky – zůstává tedy otázkou, jak je to ve skutečnosti)

Editoval nightfish (13. 5. 2018 18:04)

Username
Člen | 36
+
0
-

Používám databázi PostgreSQL. Mým cílem je aby podmínka WHERE omezila řádky na akce, které začínají v budoucnu od aktuálního data včetně.

->where('zacatek > ?', date('Y-m-d')) // funguje, ale chybí akce konané v aktuálním datu
nightfish
Člen | 518
+
0
-

@Username: Dle sqlfiddle to funguje i v PostgreSQL (datum je uloženo ve sloupci s typem timestamp). Pokud se mají zobrazovat i akce v aktuálním datu, je potřeba místo operátor > použít >= (ostatně tak to máš v původním příspěvku).