6
Indiquez l’intérêt que vous portez à cette question
0

Filtre age ne marche pas avec une base sqlite

Avrel Vor

Bonjour,

On veut faire une sélection des brèves ayant une date de publication dans le futur :

<BOUCLE_breves(BREVES) {age<0}{par date}{inverse}{0,5}>
<li>[(#DATE) &ndash; ]<a href="#URL_BREVE">#TITRE</a> - #MAJ</li>
</BOUCLE_breves>

Le résultat n’est pas bon : {age<n} donne toujours toutes les brèves, y compris avec n négatif. Par contre {age>n} ne retourne jamais rien.

Un test avec ?var_profile=1&var_mode=calcul donne la requête SQL :

SELECT breves.date_heure, breves.date_heure AS date, breves.id_breve, breves.titre, breves.maj, breves.lang FROM cea_breves AS 'breves' WHERE (breves.statut = 'publie') AND (LEAST((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(breves.date_heure))/86400, TO_DAYS(NOW())-TO_DAYS(breves.date_heure), DAYOFMONTH(NOW())-DAYOFMONTH(breves.date_heure)+30.4368*(MONTH(NOW())-MONTH(breves.date_heure))+365.2422*(YEAR(NOW())-YEAR(breves.date_heure))) < '0') ORDER BY breves.date_heure DESC LIMIT 0,5

La commande sqlite3 retourne avec cette requête une erreur :
no such function : LEAST

En faisant d’autres essais on voit que la plupart des commandes utilisées dans la requête SQL (comme UNIX_TIMESTAMP, NOW,...) sont ignorées par Sqlite qui serait limité aux commandes de date :
SQLite supports five date and time functions as follows :
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
d’après http://www.sqlite.org/lang_datefunc.html

Merci d’une aide.