Maison > Questions et réponses > le corps du texte
J'ai une table de gestion de projet avec 1000 tâches/enregistrements, chaque tâche/enregistrement a une dynamique starting_date
和ending_date
列。这些日期的值是通过获取一个静态的项目“上线”日期(例如2022-10-01
),然后减去每个记录的task_offset_days
值(例如-211),从而得到starting_date
的值。结束日期通过一个days_to_complete
列计算,该列具有例如60
天的值,如果将其加到starting_date
上,就得到了最终的ending_date
.
Exemple : Date de mise en ligne = 2022-10-01
,偏移-211
天,得到starting_date = '2022-03-04'
,再加上days_offset
的值60
,得到ending_date = 2022-05-03
.
La question ici est :
Je souhaite copier ces 1 000 enregistrements dans une autre table et, ce faisant, mettre à jour la valeur de starting_date
和ending_date
en fonction d'une autre date de mise en ligne. Étant donné que j'ai 1 000 enregistrements à copier et à modifier, comment puis-je le faire de la manière la plus efficace possible ?
Requête de copie actuelle :
@live_date = '2022-10-01'; // 上线日期 INSERT INTO `new_task_table` ( `property_id`, // 唯一标识符,在原始表中不存在 `status`, `task_desc`, `phase`, `workstream`, `task_level`, `task_owner_group`, `start_date`, // = 上线日期 - 偏移量 `end_date`, // = 开始日期 + 完成天数 `offset_days`, // 例如 -211(注意:可以低于/高于零:-211或120) `days_to_complete`, // 例如 60 `created_at` ) SELECT '31', `status`, `task_desc`, `phase`, `workstream`, `task_level`, `task_owner_group`, `start_date`, `end_date`, `offset_days`, `days_to_complete`, '2022-01-01 00:00:00' // 查询执行的日期 FROM `old_task_table`;
P粉9094764572023-09-08 12:04:17
C'est peut-être plus simple que vous ne le pensez. Vous transmettez simplement la valeur à SELECT
@live_date = '2022-10-01'; // 上线日期 INSERT INTO `new_task_table` ( `property_id`, // 唯一标识符,在原始表中不存在 `status`, `task_desc`, `phase`, `workstream`, `task_level`, `task_owner_group`, `start_date`, // = 上线日期 - 偏移量 `end_date`, // = 开始日期 + 完成天数 `offset_days`, // 例如 -211(注意:可以是负数或正数:-211 或 120) `days_to_complete`, // 例如 60 `created_at` ) SELECT '31', `status`, `task_desc`, `phase`, `workstream`, `task_level`, `task_owner_group`, DATE_ADD(@live_date, INTERVAL offset_days DAY) AS start_date, DATE_ADD(@live_date,INTERVAL offset_days + days_to_complete DAY) AS end_date, `offset_days`, `days_to_complete`, '2022-01-01 00:00:00' // 查询执行日期 FROM `old_task_table`;