Mysql 在SQL中强制转换迄今为止的负整数

Mysql 在SQL中强制转换迄今为止的负整数,mysql,sql,casting,navicat,Mysql,Sql,Casting,Navicat,我在使用Navicat数据库时遇到问题。我在SQL中得到了一个名为fechaNacimiento(Birthdate)的列,该列应该是日期类型,但它存储为整数(大多数为负整数): 我得到: fechaNacimiento -1451678400 -2082829392 -1798746192 -1199221200 -1356984000 -694299600 -1483214400 -1924976592 -1830368592 -2019670992 -1678909392 23925240

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

我得到:

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

我不知道这个数据是如何加载的,我只知道在这个负整数中有一个日期,这里没有人知道如何拼写SQL,所以我没什么好问的。如果我只是将其转换为DATETIME,我会将它们全部作为空值。你知道如何将这些数据转换成日期类型吗?

这样的数字让我想起了Unix时代,1970年以来的秒数。如果是这样,您可能可以执行以下操作:

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

你知道日期代表什么吗?你说的“日期代表什么”是什么意思?如果你这么问的话,他们是60岁以上的人的生日。在我看来,他们就像是纪元米利斯。相当标准的日期存储方式。或者这也可以是毫秒
dateadd(ms,-2019670992,cast('20000101'作为datetime2))
='08.12.1999 14:58:49'可能只有表创建者知道。Navicat不认识我dateadd函数,但我使用了DATE\u ADD('1970-01-01',INTERVAL SECOND),它工作得很好。谢谢。@Serg。以下是不同计算系统的参考历元开始的有趣列表:。有趣的是,我并没有把2000-01-01放在列表的最前面,而列表中遗漏了1960-01-01,这是SAS的新纪元。@Cris。如果您的数据库不支持
dateadd()
,则它不是SQL Server。我正在换标签。
select dateadd(second, <column>, '1970-01-01')
select dateadd(second, <column>/1000, '1970-01-01')
select '1970-01-01' + interval floor(column / 1000) second