MySQL で、計算されたデルタ値によってデータベース内のすべての日付/日時列をシフトする方法はありますか?
静的テーブルと列 (テーブルと列は常に同じ) から最大日付を取得し、それを 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データベース列と現在の間のデルタを計算し、データベース内のすべての日付/日時列をその値でシフトする方法はありますか?