EDIT after clarification:
I'm afraid you can't deal with it the way you intend.
You have to find another way, like for example defaulting to
NULL and selecting via
SELECT COALESCE(ts, CONVERT_TZ( '1970-01-01 00:00:01', '+00.00', @@session.time_zone)) AS ts, ...
Or just use
datetime and store the time_zone in a separate column. It depends on your requirements. But there's no way you can make it work like you want to, not even with triggers.
You can't use any functions in a table definition.
What you're trying to do is unnecessary anyway. May I quote the manual:
MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.) By default, the current time zone for each connection is the server's time. The time zone can be set on a per-connection basis. As long as the time zone setting remains constant, you get back the same value you store. If you store a TIMESTAMP value, and then change the time zone and retrieve the value, the retrieved value is different from the value you stored. This occurs because the same time zone was not used for conversion in both directions. The current time zone is available as the value of the time_zone system variable.
If you are querying a database across different timezones, and need the date/time to reflect individual users settings, use
timestamp. If you need consistency regardless of timezone, use