This problem also affects FROM_UNIXTIME(). One would expect that having a TIMESTAMP column which is always set through FROM_UNIXTIME() and always read through UNIX_TIMESTAMP() would be safe from calendaric discontinuities etc, but that is not so.
An example, assuming that the active time zone on the connection is Europe/Stockholm (aka CET):
mysql> CREATE TABLE test (ts TIMESTAMP DEFAULT 0);
mysql> INSERT INTO test SET ts = FROM_UNIXTIME(1130630400);
mysql> SELECT UNIX_TIMESTAMP(ts) FROM test;
+--------------------+
| UNIX_TIMESTAMP(ts) |
+--------------------+
| 1130634000 |
+--------------------+
Note the 1 hour difference between the set value and the retrieved one.
A workaround is to change the timezone on the connection to one that doesn't use DST:
mysql> SET time_zone = '+00:00';
mysql> CREATE TABLE test (ts TIMESTAMP DEFAULT 0);
mysql> INSERT INTO test SET ts = FROM_UNIXTIME(1130630400);
mysql> SELECT UNIX_TIMESTAMP(ts) FROM test;
+--------------------+
| UNIX_TIMESTAMP(ts) |
+--------------------+
| 1130630400 |
+--------------------+