Django - 使用 postgresql "to_date" 按日期获取查询

Django - get the query by date using 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 return 很好的结果,但是当我把它放到 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

语法问题是什么?

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

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.