Kira nilai tarikh lajur: Gunakan pembolehubah dan lajur lain untuk melakukan pengiraan mengimbangi tarikh
P粉401901266
P粉401901266 2023-09-07 16:31:02
0
1
544

Saya mempunyai jadual pengurusan projek dengan 1000 tugas/rekod, setiap tugas/rekod mempunyai dinamik starting_dateending_date列。这些日期的值是通过获取一个静态的项目“上线”日期(例如2022-10-01),然后减去每个记录的task_offset_days值(例如-211),从而得到starting_date的值。结束日期通过一个days_to_complete列计算,该列具有例如60天的值,如果将其加到starting_date上,就得到了最终的ending_date.

Contoh: Tarikh siaran langsung = 2022-10-01,偏移-211天,得到starting_date = '2022-03-04',再加上days_offset的值60,得到ending_date = 2022-05-03.

Persoalannya di sini ialah:

Saya ingin menyalin 1000 rekod ini ke jadual lain dan dalam proses mengemas kini nilai starting_dateending_date berdasarkan tarikh siaran langsung yang lain. Memandangkan saya mempunyai 1000 rekod untuk disalin dan diedit, bagaimanakah saya boleh melakukan ini dengan cara yang paling cekap?

Pertanyaan salinan semasa:

@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粉401901266
P粉401901266

membalas semua(1)
P粉909476457

Ia mungkin lebih mudah daripada yang anda fikirkan. Anda hanya menghantar nilai kepada 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`;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan