SQL Server:DateTime存储为具有奇异值的Int

时间:2018-11-16 16:35:30

标签: sql sql-server tsql date datetime

我正在查询由另一家公司维护的数据库,并且正在从其数据库中提取日期,但是它们以整数形式存储。它们具有9位数字值,例如:

  • 577976126
  • 595678891

当我使用他们的前端应用程序查询同一条记录时,这些日期显然都在过去几天之内,但是,我无法确定他们使用的日期格式。尝试将这些值转换或转换为日期时间或类似的所有抛出错误。

以5开头的9位日期格式是SQL Server吗?还是这家第三方公司制定的惯例?如果任何人都有任何信息,即使有关日期格式可能是什么以及如何进行转换,那也将非常有帮助。

编辑:

以下是一些比较SQL值和前端日期时间的示例。

595678891 - 11/14/18 9:05  
595672666 - 11/13/18 20:35  
581623591 - 06/06/18 18:06  

我相信所有前端时间都在美国东部时间。

2 个答案:

答案 0 :(得分:5)

这只是一个猜测,但距 2000-01-01

示例

Select dateadd(second,595678891,'2000-01-01')

返回

2018-11-16 10:21:31.000

答案 1 :(得分:0)

这看起来像是以epoch的形式存储的,它是一个整数,因为它表示自所选开始日期起经过的时间。

您必须知道开始日期才能正确转换。例如,最常见的时期是1970年1月1日开始的Unix时期。所有日期都是从该日期起经过的时间计算的。

您也许可以在线使用epoch calculators来确定所使用的纪元日期。我对您的样本进行了尝试,发现第一项的2000年1月1日返回了2018年11月16日,这似乎符合您的期望。

您需要确定正在使用哪个时期以确保...