Автоматически генерировать строки с разными датами

0

Есть ли способ автоматически генерировать строки с разными датами, но оставить остальную часть данных одинаковой?

Например, я пытаюсь создать ниже один раз каждые 7 недель? Есть ли способ сделать это, или я должен повторить это ниже вручную?

INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )


SELECT 'TEMP',9,51,'2018-01-22','2018-01-26',4 -- Week ,2,CourseFee FROM topic WHERE TopicID=51;
Теги:

2 ответа

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

Это решение для вас:

  1. Создать таблицу с идентификатором

  2. Вставьте от 1 до 52 за 52 недели

  3. Выберите начальный и конечный день недели из таблицы.

  4. Вставьте другие данные с датой начала и окончания недели


Create table test1(id int not null PRIMARY KEY);

INSERT into test1 select 1;

insert ignore into test1 select id+(select max(id) from test1) from test1;

 insert ignore into test1 select id+(select max(id) from test1) from test1;

 insert ignore into test1 select id+(select max(id) from test1) from test1;

 insert ignore into test1 select id+(select max(id) from test1) from test1;

 insert ignore into test1 select id+(select max(id) from test1) from test1;

 insert ignore into test1 select id+(select max(id) from test1) from test1;

 delete from test1 where id >52;

 -- Select 52 week begin and end date
 select DATE_ADD('2017-01-02',INTERVAL (id-1)*7 DAY) Week_begin_date, DATE_ADD('2017-01-02',INTERVAL (id-1)*7+4 DAY) Week_end_date from test1;

 --Insert Data for 52 weeks
 INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )
 SELECT 'TEMP',9,51,DATE_ADD('2017-01-02',INTERVAL (id-1)*7 DAY), DATE_ADD('2017-01-02',INTERVAL (id-1)*7+4 DAY) ,id, <LocationID_value>, <CourseFee_value> from test1;
0

Я не уверен в ваших требованиях к "разным датам". Если вам просто нужны разные отметки времени от одной строки к следующей, будет работать следующее:

INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )
SELECT 'TEMP',9,51,NOW(), NOW(),4,2,CourseFee 
FROM topic WHERE TopicID=51;

Если "разные даты" означают, что каждая дата в одной строке должна быть другой календарной датой, будет работать следующее:

INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )
SELECT 'TEMP',9,51,NOW(), NOW() + INTERVAL 1 DAY,4,2,CourseFee 
FROM topic WHERE TopicID=51;

Просьба уточнить требования к "разным датам", и я могу составить лучший ответ.

  • 0
    Поэтому я пытаюсь повторять курс / мероприятие каждые 7 недель и назначать новую строку для каждого мероприятия. Каждая дата является календарной датой.
  • 0
    Хорошо, немного ближе ... Хотя нужно больше параметров ... Итак, вы хотите новую строку для каждого запланированного события. Я предполагаю, что все события в будущем? Так что же такое дата начала? Какова продолжительность каждого события? и сколько событий вы хотите?
Показать ещё 1 комментарий

Ещё вопросы

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