CREATE TABLE `zadanie` ( `id` int(11) NOT NULL AUTO_INCREMENT, `wlasciciel` int(11) NOT NULL, `opis` text NOT NULL, `ip` varchar(30) NOT NULL, `wpisano` datetime NOT NULL, `termin` datetime NOT NULL, `kategoria` int(11) NOT NULL, `stan` int(2) NOT NULL, `priorytet` int(2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=165 ;
chciałbym wyciągnąć sobie zadania, które mają termin wykonania późniejszy niż dzień dzisiejszy. używam do tego zapytania:
SELECT * FROM zadanie WHERE wlasciciel=1 AND termin > curdate() AND stan=1 ORDER BY opis;
Działa to, jednak dziwię się nieco, bo curdate() teoretycznie zwraca datę bez godziny, minut itd, a w `termin` mam zawartość jako datatime. Czy curdate() przy porównaniu do pola datatime zakłada, że data jest z czasem 00:00:00 ? orientuje się ktoś może?
2ga sprawa:
chciałbym mieć zadania, które mają termin na dziś, bez względu na godzinę. kombinowałem z curdate:
SELECT * FROM zadanie WHERE wlasciciel=1 AND termin = curdate() AND stan=1 ORDER BY opis;
gleba, zapytanie niepoprawne. I tu pytanie do Was: jak sprawnie wyciągnąć z `termin` wartość, którą będzie można z powodzeniem przyrównać do curdate()?
pytanie trzecie: chciałbym uzyskać w wyniku zadania, które mają `termin` pomiędzy dniem jutrzejszym, a 'dniem-za-7 dni':
SELECT * FROM zadanie WHERE wlasciciel=1 AND termin BETWEEN curdate() + interval 1 day AND curdate() + interval 7 day AND stan=1 ORDER BY opis;
powyższe zapytanie oczywiście sypie błędami. mogę prosić o podpowiedzienie poprawnej składni?