2014-10-30 137 views
3

当我运行下面的查询比较PostgreSQL的时间戳的SQL查询时区在Django

Viewed.objects.raw('SELECT "recently_viewed_viewed"."id"FROM "recently_viewed_viewed" WHERE NOT ("recently_viewed_viewed"."viewed_date" <= \'timezone.now()\' AND "recently_viewed_viewed"."user_id" = user_id)') 

我得到

DataError: invalid input syntax for type timestamp with time zone: "timezone.now()" 

我一直在挣扎与这一个尚未能图出来。任何帮助总是感激!

回答

1

django expect timestamp with time zone但是您通过timestamp without time zone。您必须在您的时间内添加timezone或在您的settings.py中设置USE_TZ = False。您可以使用pytz添加timezone。或使用此:

timezone.now().replace(tzinfo=timezone.get_default_timezone()) 

用于更改timezone与您的设置时区。

+0

不''timezone.now()'包括时区? – robert 2014-10-30 22:19:12

+0

不,请检查'timezone.is_aware(timezone.now())'并查看结果。 – 2014-10-30 22:29:42

+0

好的,我可以使用pytz转换它吗?我已经''viewing_date“<= \'timezone.localtime(datetime.now(),is_dst = None)现在 – robert 2014-10-30 22:45:24