@AirronBark

Как оптимизировать запрос sqlite datetime для postgresSQL date?

Здравствуйте!
Если в Sqlite все довольно понятно, то у Postgres очень уж трудоемкая документация.
Прошу помочь знающих, как сделать аналогичную функцию на posgresSQL:

Есть данная функция в sqlite использовал datetime. Но к сожалению в постгре она не работает, тк у date есть свои ограничения, но есть ли возможность настроить их аналогично? Чтоб от текущей даты отсчитывался определённый момент времени

import psycopg2

    def get_records(self, user_id, within="all"):
        """Получаем историю о заказах"""
        if (within == "day"):
            self.cursor.execute("""SELECT * FROM orders WHERE user_id = %s AND order_date BETWEEN date('now', 'start of day') AND date('now', 'localtime') ORDER BY order_date""",
                (str(self.get_user_id(user_id)),))
        elif (within == "week"):
            self.cursor.execute("""SELECT * FROM orders WHERE user_id = %s AND order_date BETWEEN date('now', '-6 days') AND date('now', 'localtime') ORDER BY order_date""", (str(self.get_user_id(user_id)),))
        elif (within == "mounth"):
            self.cursor.execute("""SELECT * FROM orders WHERE user_id = %s AND order_date BETWEEN date('now', 'start of month') AND date('now', 'localtime') ORDER BY order_date""",(str(self.get_user_id(user_id)),))
        else:
            self.cursor.execute("""SELECT * FROM orders WHERE user_id = %s ORDER BY order_date""", (str(self.get_user_id(user_id)),))
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
@galaxy
Текущее время - now()
date_trunc() - округление даты
-- date('now', 'start of day')
date_trunc('day', now())

-- date('now', 'start of month')
date_trunc('month', now())

-- date('now', '-6 days')
now() - INTERVAL '6 days'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
select current_date,
current_date - interval '6 day',
date_trunc('month', now()),
now();

Просто другой набор функций, выберите подходящую.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы