Breaking: #99937 - Utilize BIGINT database column type for datetime TCA¶
'type' => 'datetime' attribute previously created
integer signed types as per the new auto-creation of table columns,
if not specified differently via
ext_tables.sql or listed as an exception
datetime field created without an exception would allow date ranges
from 1901 to 2038. While that allows dates before 1970 (usual birthdays),
sadly this field would "end" in 2038.
Because of this, the exceptions (
crdate) already are created as
integer unsigned, which puts them
from 1970 to 2106. Dates before 1970 are not needed, because you will not publish
or create anything in the past, but maybe after 2038.
However, there are many usage cases where
datetime TCA fields should have
a much broader time span, or at least past 2038.
Now, all these fields are changed to use the
bigint unsigned data type.
This allows to define ranges far into the future and past. It uses a few
more bytes within the database, for the benefit of being a unified solution
that can apply to every usage case.
All extensions that previously declared
datetime columns should
remove the column definition from
ext_tables.sql and utilize with the
bigint unsigned. This will allow to store timestamps after
In the rare case that your extension needed an even broader, non-negative
bigint signed), you need to keep a custom column definition.
A future implementation may change from integer-based columns completely
to a native
datetime database field.
When executing the database compare utility, the column definitions for a few Core fields are changed and their storable range increases.
These fields are now able to hold a timestamp beyond 2038 (and also before 1970),
and are now defined just like