MySQL 中有没有办法通过计算的 delta 值移动数据库中的所有日期/日期时间列?
我想从静态表和列(表和列始终相同)中获取最大日期,然后从 curdate() 值中减去该最大日期,以获得所说的最大值是落后的天数。然后我想将数据库中的所有日期/日期时间值移动该数字,有效地将数据库中的所有记录带到当前时间。
我知道我可以使用该information_schema.columns
属性来拉取日期/日期时间的所有列,但我不确定如何将它构建到一个有效的“和理智”查询中来进行更新。
我在想类似的东西:
SELECT concat('UPDATE ', table_name, ' set ', column_name, ' = date_add(', column_name, ', INTERVAL datediff(curdate(), max(given_table.given_column)) day);')
from information_schema.columns
where data_type in ('date', 'datetime') and table_schema = 'mydatabase';`
但是很明显,这有很多问题,所以我知道我不能使用它。
有没有办法计算 X 数据库列和现在之间的增量,然后按该值移动数据库中的所有日期/日期时间列?