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!
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
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.