将负整数转换为 SQL 中的 DATE

Casting negative integer to DATE in SQL

我在使用 Navicat 数据库时遇到问题。我在 SQL 中有一个名为 fechaNacimiento (Birthdate) 的列,它应该是 Date 类型,但它存储为整数(大多数负整数):

SELECT fechaNacimiento FROM Registrados

我得到:

fechaNacimiento
-1451678400
-2082829392
-1798746192
-1199221200
-1356984000
-694299600
-1483214400
-1924976592
-1830368592
-2019670992
-1678909392
239252400
1451617200
-879541200        

我不知道这个日期是怎么加载的,我只知道那个负整数里面有一个日期,而且这里没有人知道如何拼写SQL,所以我没有人问.如果我只是将它转换为 DATETIME,我会将它们全部设为 NULL 值。知道如何将此数据转换为日期类型吗?

这样的数字让我想起了 Unix 时代,自 1970 年以来的秒数。如果是这样,您也许可以这样做:

select dateadd(second, <column>, '1970-01-01')

这会将负值放在 1970 年之前的某个时间(例如,-1678909392 是 1916-10-19)。如果您有更早的日期,那么这可能是正在使用的格式。

这些也可以表示为毫秒。如果是:

select dateadd(second, <column>/1000, '1970-01-01')

在这种情况下,-1678909392 代表 1969-12-12。

在 MySQL 中,您将使用:

select '1970-01-01' + interval floor(column / 1000) second