将SQL Server日期时间格式转换为unix时间

时间:2011-05-01 11:17:02

标签: sql-server datetime

我们正在使用JSON API,它返回我们被告知的SQL Server日期时间格式的时间,例如:/ Date(-6847804800000 + 0000)

我正在尝试将其转换为unix时间以使用标准方法,有没有人知道这样做的简单方法?如果没有,将其转换为任何其他日期格式将会有所帮助。

PS:我们无法访问SQL Server数据库来更改API将数据吐出的方式。

2 个答案:

答案 0 :(得分:2)

使用PowerShell快速检查:

PS> [datetime]"1970-01-01 00:00" + [timespan]::FromMilliseconds(-6847804800000)

01 January 1753 00:00:00

所以评论员Martin和Gerben似乎是正确的。这是从19700101T000000的毫秒偏移。

答案 1 :(得分:0)

该服务正在传递SqlDateTime.MinValue +当天正在讨论的小时数。

1753的基数用于确定偏移值,而您的偏移量是1970年。

首先,你想获取返回的-6847804800000并在1753和1970之间加上总的毫秒数。这将为你提供1970年以来的偏移量。

        SqlDateTime minSqlDateTime = SqlDateTime.MinValue;

        DateTime minTimeStampDateTime = new DateTime(1970, 1, 1);

        double milli = (minTimeStampDateTime - (DateTime)minSqlDateTime).TotalMilliseconds; // = 6847804800000

        double toDetermineTicks = -6847804080000; // so this is 01/01/1753 12:00 PM

        double ActualUnixTicks = (toDetermineTicks + milli) / 1000;