@mawikag347

Как в QueryBuilder задать WHERE, в котором будет сравнение с текущим значением?

пытаюсь сделать примерно такой запрос:
SELECT id
FROM table
WHERE CURRENT_TIMESTAMP() > DATE_ADD(o.created_at, INTERVAL 1 DAY)
	AND o.created_at > DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 DAY)


Напрямую использовать mysql функции не получается, функций дат в Expression тоже нет. Попытался сделать так:
$qb = $this->createQueryBuilder('o');

        $q = $qb
            ->select([
                'o.id'
            ])
            ->andWhere($qb->expr()->gt(
                $qb->expr()->literal('CURRENT_TIMESTAMP()'),
                $qb->expr()->literal('DATE_ADD(o.dateAdd, INTERVAL 1 DAY)')
            ))
            ->andWhere($qb->expr()->gt(
                $qb->expr()->literal('o.dateAdd'),
                $qb->expr()->literal('DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 DAY)')
            ));

Но литералы просто сравнивают длину строки, в которой лежит SQL.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы