Le 18 sept. 2012 à 10:16, Christophe Narbonne <[email protected]> a écrit :
> Bonjour, j'ai pu passer quelques minutes avec Monsieur Pujol avec de la VOIP.
>
> Avec PostgreSQL, les dates sont enregistrés en "timestamp with timezone" et
> semblent ne pas se comparer à des entiers si facilement.
Effectivement la comparaison des types timestamp et integer n'est pas possible.
Par contre il est possible de comparer un timestamp
avec un char (qui sera cast automatiquement en timestamp), et les opérateurs >,
<, =, between et variantes fonctionnent, par ex:
select * from table where date_created >= '2012-01-01 23:59:00';
>
> J'ai vu des customfields qui en effet gérait ça avec des integer mais je ne
> suis pas sur que ce soit fonctionnel en production avec postgres et des dates
> avec timezone. Ce qui m'a mis la pusse à l'oreille est l'erreur quand on a
> essayé:
>
> Todo.objects.filter(datelimite__lte=int(time.mktime(today.timetuple())) +
> (F("tache__delai") *3600 * 24))
En exprimant l'objet datetime en str plutôt qu'int la comparaison est possible,
ca doit donner quelque chose du genre :
Todo.objects.filter(datelimite__lte=(today +
timedelta(day=F(tache__delai)).isoformat())
Si le format produit par la méthode datetime.isoformat() ne fonctionne pas,
voir a utiliser strftime('%Y-%m%-d %T') (plus l'éventuelle timezone)
--
Aymeric Barantal
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django