Django-使用Postgresql“ to_date”按日期获取查询

时间:2018-07-28 10:57:31

标签: python django postgresql to-date

我需要使用Django .objects.raw函数获取原始对象,例如:

SELECT * FROM TEST_APP_DOCUMENT WHERE DATE BETWEEN to_date('0000-02-07','YYYY-MM-DD') AND to_date('2027-02-15', 'YYYY-MM-DD')

在pgAdmin select中返回良好的结果,但是当我将其放入django时出现错误:

  File "C:\Users\User\Desktop\test_task\test_app\views.py", line 110
    queryset = Document.objects.raw('SELECT * FROM TEST_APP_DOCUMENT WHERE DATE BETWEEN to_date('0000 - 02 - 07','YYYY - MM - DD') AND to_date('2027 - 02 - 15', 'YYYY - MM - DD')')
                                                                                                    ^
SyntaxError: invalid syntax

语法问题是什么?

1 个答案:

答案 0 :(得分:1)

您正在传递带有单括号(')的字符串文字,同时将其包含在字符串本身中。您必须转义它们或使用"

queryset = Document.objects.raw("SELECT * FROM TEST_APP_DOCUMENT WHERE DATE BETWEEN to_date('0000 - 02 - 07','YYYY - MM - DD') AND to_date('2027 - 02 - 15', 'YYYY - MM - DD')")

您可以按期望使用反斜杠进行转义。例如,'foo\'bar'将产生foo'bar