sql вставлять данные только в рабочие дни

0

У меня очень простой стол, конструкция которого выглядит так:

id           int
info         varchar
user         varchar
start_date   datatime
end_date     datatime
resources_id int

Мне нужно вставить много строк (например, в течение следующих двух лет), которые будут иметь данные только для рабочих дней - данные из полей являются простой копией, но я не знаю, как подготовить вставку для такого рода рабочих дней. Можно ли вообще это сделать?

И мой пример файла дампа выглядит так:

id   info   user     start_date            end_date              resource_id
31   NULL   aorlik   2018-01-04 08:00:00   2018-01-04 10:00:00   1
32   NULL   aorlik   2018-01-04 15:00:00   2018-01-04 17:00:00   1
Теги:
sql-insert
insert-into

1 ответ

1
Лучший ответ

Ну вот.

Я создаю функцию базы данных, которая создает целый год дат. Вы можете преподнести его в соответствии с вашими пожеланиями, но вы должны получить эту идею.

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

Для этого я создал тестовую таблицу с двумя полями datetime (start_date, end_date). Внутри функции я усекаю таблицу, только для целей тестирования.

DROP PROCEDURE IF EXISTS create_date_for_year;

DELIMITER //

CREATE PROCEDURE create_date_for_year (IN year INT)
BEGIN
    DECLARE day INT DEFAULT 1;

    SET day=1;

    TRUNCATE test; -- JUST FOR TESTING!

    WHILE day < 366 DO  
        IF WEEKDAY(MAKEDATE(year, day)) NOT IN (5,6) THEN -- skip sat and sun
            INSERT INTO TEST (start_date, end_date) VALUES ( 
                CONCAT(MAKEDATE(year, day), ' ', MAKETIME(8,0,0)),
                CONCAT(MAKEDATE(year, day), ' ', MAKETIME(10,0,0))
                );
        END IF;
        SET day = day + 1;
    END WHILE;
END;

//

CALL create_date_for_year(2018)
  • 0
    ОП немного прояснил их ситуацию: у них есть файл дампа (или файлы) с данными, которые нужно массово вставить в их таблицу. Но есть немало других неясностей.
  • 0
    отлично работает спасибо Роджер!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню