The boundary
A signed 32-bit integer can store values from −2,147,483,648 through 2,147,483,647. Interpreted as Unix seconds, the positive limit is 2038-01-19T03:14:07Z. Adding one second overflows that representation.
Who should check
Legacy operating systems, embedded devices, database columns and binary protocols may still use signed 32-bit seconds. A 64-bit timestamp or a suitable date type moves the practical boundary far beyond ordinary application lifetimes.
Testing
Test values on both sides of the boundary through the complete stack: parser, storage, API serialization, client runtime and reporting tools. A modern application server does not protect an older database column or device protocol.
Verify the boundary
| Unix seconds | UTC |
|---|---|
2147483646 | 2038-01-19 03:14:06 |
2147483647 | 2038-01-19 03:14:07 |
2147483648 | 2038-01-19 03:14:08 |
The third value is a valid timestamp in a wider representation. It exceeds the maximum signed 32-bit integer, not the definition of Unix time. This site's timestamp converter can display it when seconds is selected.
A signed 32-bit value ranges from −2,147,483,648 to 2,147,483,647. If an old system wraps rather than rejecting overflow, the next value can become a negative number and appear in 1901. The exact failure depends on the language, operating system and storage format.
Audit the complete storage path
Check the database column, driver binding, API schema, serialization layer and application type. Migrating only the database column does not fix a 32-bit cast in a client or an embedded device. Test values immediately before and after the boundary, then read them back and compare the stored integer rather than only the formatted date.
Use an appropriate wider integer or a documented date type supported throughout the system. An unsigned 32-bit second counter has a different later boundary; it does not solve negative dates or every protocol compatibility problem.
Distinguish other limits
The Year 2038 problem is about signed 32-bit seconds. JavaScript's safe-integer limit and a browser date's supported range are separate constraints. Milliseconds need a larger magnitude than seconds for the same instant; microseconds and nanoseconds may exceed a floating-point integer's exact range much sooner.
Use seconds versus milliseconds to choose the scale. For a migration file, the batch converter can check rows, but it cannot inspect or repair the types used by your external system.