2016-02-07 3 views
-2

У меня есть таблица, в которой указаны все выходные/выходные дни. Есть ли запрос, который может помочь мне найти последний рабочий день (не праздник или выходные), который произошел?MySQL Поиск последнего рабочего дня

Пример: Если воскресенье, я хочу дату прошлой пятницы. Предполагая, что пятница не праздник.

http://sqlfiddle.com/#!9/f474e4

Вот ниже структура:

CREATE TABLE `calendar_table` (
    `dt` date NOT NULL, 
    `y` smallint(6) DEFAULT NULL, 
    `q` tinyint(4) DEFAULT NULL, 
    `m` tinyint(4) DEFAULT NULL, 
    `d` tinyint(4) DEFAULT NULL, 
    `dw` tinyint(4) DEFAULT NULL, 
    `monthName` varchar(9) DEFAULT NULL, 
    `dayName` varchar(9) DEFAULT NULL, 
    `w` tinyint(4) DEFAULT NULL, 
    `isWeekday` binary(1) DEFAULT NULL, 
    `isHoliday` binary(1) DEFAULT NULL, 
    `holidayDescr` varchar(32) DEFAULT NULL, 
    `tradingHoliday` binary(1) DEFAULT NULL, 
    PRIMARY KEY (`dt`) 
) 
+0

У меня уже есть что-то вроде этого. Но мне нужно найти последний рабочий день, который произошел. –

+1

Какова структура таблицы? как мы можем вам помочь, если мы не знаем, какие столбцы нам говорят. – sagi

+1

«Предполагая, что пятница не праздник» Знаете ли вы, что это зависит от страны? – lad2025

ответ

2

Попробуйте это:

SELECT max(dt) 
FROM calendar_table 
where dt <= curdate() 
and isHoliday = 0 
and isWeekDay = 1; 

Вам, возможно, придется настроить его немного, так как вы не отправил что хранится в каждой вашей колонке.

Но это основная, чтобы выбрать максимальную дату, когда все показания указывают на рабочую дату в диапазоне до сегодняшнего дня.

+0

Я подозреваю, что isWeekDay = 1, но да, это должно сделать это. –

+0

@JoachimIsaksson Я подозреваю, что ты прав :) – sagi

Смежные вопросы