Goedemiddag!

Graag wil ik het forum hier even om hulp vragen, ik zit met een probleempje.
In onze database word een datum opgeslagen als 2017-02-22, nu wil ik met sql alleen results inladen boven de huidige tijd/timestamp, alleen lukt mij dit niet.

Mijn code is nu:


<?php
$thisTime = time();
$db->setQuery("SELECT title FROM events WHERE UNIX_TIMESTAMP(startdate) > '".$thisTime."' ORDER BY `title` ASC");
?>


Hij laad nu echter alleen results van 2019 en niet events daarboven.
Hoop dat iemand me kan helpen!

SELECT title
FROM events
WHERE startdate > NOW()
ORDER BY title ASC
Dit werkt dus helaas niet, ook weer hetzelfde resultaat
welke datum mis je (een voorbeeld)? Is startdate een kolom van type DATE?

En je voert de query exact zo uit?

Ik vraag me af, of je de datum inderdaad als 2017-07-18 hebt opgeslagen.

de 19 uit 2019 is namelijk groter dan de 18 uit de datum van vandaag.

--
Voer de query ook eens "rechtstreeks" uit op de database met een tool als PHPMyAdmin of iets dergelijks
Nee is dus niet als datum ingesteld daarom pakt hij hem ook niet goed, beetje slecht van dit component dat we gebruiken
Als het component daadwerkelijk een (var)char in het goede formaat opslaat is het wellicht een poging waard om gewoon het datatype van de kolom te veranderen(wel eerst backup maken).
Wil je daar niet aan dan heb je twee opties:

1) Indien opgeslagen als YYYY-mm-dd

SELECT tiltle
FROM events
WHERE DATE(startdate) >= CURRENT_DATE //DATE(startdate) is kort voor CAST(startdate AS DATE)

2) Indien anders (bv dd-mm-YYYY)

SELECT tiltle
FROM events
WHERE STR_TO_DATE(startdate, '%d-%m-%Y') >= CURRENT_DATE

Voor de formats zie de docs
Uhm, yyyy-mm-dd kun je toch prima lexicografisch mee sorteren? Dus als je dat format gebruikt ook al is de kolom niet van het date(time) type, dan zou je hier nog steeds mee moeten kunnen rekenen?
Oh ik zie dat startdate ingesteld staat als date in de database (0000-00-00).
Maar SELECT title FROM event WHERE STR_TO_DATE(startdate, '%Y-%m-%d') >= CURRENT_DATE() ORDER BY `title` ASC geeft ook maar 1 weer, hetzelfde voor WHERE DATE(startdate) >= CURRENT_DATE.

Heel appart

Reageren