0

我从 sql 中收集了一些详细信息,它显示了如下出生日期(每行代表不同的出生日期):

-294022800
649119600
-138675600
49158000
32396400
631152000
-2147483648
731894400
-408067200
522025200

我试图使用以下公式在 excel 中更改它们:

=DATE(INT(A1/10000),INT((A1-10000*INT(A1/10000))/100),A1-(100*INT(A1/100)))

但是效果不好,必须是不同的格式。你知道它是什么格式以及如何在excel中将其转换为日期吗?为什么有些数字是负数?这可以是 EPOCH 格式吗?如何在excel中将其更改为正常的人类日期?

4

3 回答 3

4

我的猜测是它们是 unix 时间戳http://en.wikipedia.org/wiki/Unix_time

在 excel 中,您可以使用以下内容:

=(((A1/60)/60)/24)+DATE(1970,1,1)

虽然,您将不得不注意您的日期时间似乎包括夏令时偏移的事实。(其中一些是一天的倍数(24*60*60),但另一些是一个小时)。我不确定为什么你有一个非小时倍数(-2147483648),可能是原始系统的一些怪癖。

来源:http ://spreadsheetpage.com/index.php/tip/converting_unix_timestamps/

于 2013-06-27T14:48:05.627 回答
2

Unix时间戳可以用这个公式转换

=A1/86400+DATE(1970,1,1)

Unix 时间戳是自 1970 年 1 月 1 日以来的秒数,因此在此之前的生日将是负数。[其中一个生日转换为 1901 年——对吗?如果任何日期在 1900 年之前,您就会遇到问题,因为 Excel 无法识别这些日期]

于 2013-06-27T14:51:59.043 回答
0

好的,我想通了。这是公式:

=(A1-(4*3600))/86400+25569
于 2013-06-27T14:49:44.367 回答