Отображение текущего и предыдущего периода оплаты в SQL (на основе импортированной таблицы)
Мне нужно отобразить текущие И последние периоды выплат на основе импортированной таблицы для двухнедельных дат выплат. Таблица выглядит примерно так:
2017-03-23 00:00:00 2017-04-06 00:00:00
2017-04-07 00:00:00 2017-04-20 00:00:00
2017-04-21 00:00:00 2017-05-06 00:00:00
2017-05-07 00:00:00 2017-05-20 00:00:00
2017-05-21 00:00:00 2017-06-05 00:00:00
2017-06-06 00:00:00 2017-06-22 00:00:00
2017-06-23 00:00:00 2017-07-06 00:00:00
2017-07-07 00:00:00 2017-07-21 00:00:00
Этот код:
SELECT *
FROM
table1
WHERE
(start_date <= now() AND end_date >= now())
Вывод:
2017-06-06 00:00:00 2017-06-22 00:00:00
Как я могу отобразить предыдущий период оплаты? Такие как:
2017-05-21 00:00:00 2017-06-05 00:00:00
Этот код просто не выглядит правильно, но я все равно попробовал:
SELECT start_date,
CASE
WHEN start_date = now() THEN start_date = now() - 1
WHEN end_date = now() THEN start_date = now() - 1
END
FROM table1;
Я знаю, что есть способ использовать CASE WHEN
но по какой-то причине я не могу получить правильный синтаксис, используя now()
так как я хочу, чтобы оно было динамическим, а не статичным.
2 ответа
Попробуй это
Чтобы получить текущий и предыдущий период оплаты
SELECT start_date,
end_date
FROM table1
where start_date < now()
ORDER BY start_date desc
LIMIT 2;
SELECT concat(start_date,' ',
CASE
WHEN start_date = now() THEN start_date = now() - INTERVAL 1 DAY
WHEN end_date = now() THEN start_date = now() - INTERVAL 1 DAY
END) AS PeriodOfPay
FROM table1;