How to add an offset to all timestamps/DATETIME in

2019-07-07 20:41发布

问题:

I have some MySQL databases that have several tables that contain (amongst others) some DATETIME columns. I am searching for a way to add some amount of time (say one year) to all DATETIME columns in the whole database.

This can be useful if the system-time was wrong when the data was originally written to the database.

OR, as in my case

to create recent DEMO-data for an application out of historical data.

  • Is there a way to shift all DATETIME fields in a Database at once?
  • If not, How can the DATATIME column of all entries in ONE table be shifted (i.e. add some offset)?

thanks for your answers!

回答1:

UPDATE table SET date_column = DATE_ADD(date_column, INTERVAL 1 YEAR);

This should do the trick.



回答2:

Try using INTERVAL keyword like

UPDATE table_name SET column_name = column_name + INTERVAL 1 unit

OR possibly this

ADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time or datetime expression, and expr2 is a time expression.

SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');

Unit values goes like this

unit Value  Expected expr Format  
MICROSECOND MICROSECONDS  
SECOND  SECONDS  
MINUTE  MINUTES  
HOUR    HOURS  
DAY         DAYS  
WEEK    WEEKS  
MONTH   MONTHS  
QUARTER QUARTERS  
YEAR    YEARS