Отображение текущего и предыдущего периода оплаты в 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;
Другие вопросы по тегам