我在使用 Navicat 数据库时遇到问题。我在 SQL 中有一个名为 fechaNacimiento(出生日期)的列,它应该是日期类型,但它存储为整数(大多数负整数):
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
关于mysql - 在 SQL 中将负整数转换为 DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45636952/