我是kdb+的新手,我想知道为什么2000.01.01为kdb的时代日期与unix的日期(1970.01.01)不同。
这种差异会影响到与操作系统或其他语言的交互吗?
发布于 2017-11-22 17:19:53
KDB+使用不同的时代,因为它遵循不同的标准。KDB+遵循基于朱利安年的J2000国际标准。
UNIX使用POSIX time,最初为32位无符号整数。由于计算的时间是秒的60%,所以32位整数只能工作大约829天,因此必须选择最近的日期。
1971年11月3日的第一版Unix程序员手册将Unix时间定义为“1971年1月1日00:00:00以来的时间,以六分之一秒计算”。
如果在将所选的时代时间导入应用程序之前不确保转换为一个标准,这种差异可能会导致问题。
发布于 2017-11-22 17:22:29
有关与系统/其他语言的交互的问题应该能够通过KDB解析UNIX时代时间戳的事实来处理
来自http://code.kx.com/q/ref/casting/#tok
解析Unix时间戳(从Unix时代开始的秒数),使用9…的字符串11位数: “P”$“10129708800”2290.12.31D00:00:00.000000000 q)"P"$"00000000000“1970.01.01D00:00:00.000000000
发布于 2017-11-22 17:27:54
Kdb+可以在许多不同的操作系统上使用,目前Windows、Linux86、Linux和OSX都可以从kx下载,而以前的solaris是可用的。
从维基百科关于系统时间的页面中,我们可以看到不同的操作系统使用不同的时代、日期和范围。考虑到kdb+支持的两个操作系统,我们可以看到它们具有不同的时代范围:
OS Epoch or range
-------------------------------------------------
Unix/Posix 1 January 1970 to 19 January 2038
Windows 1 January 1601 to AD 30,828无论是使用linux还是windows时代,都意味着另一个不匹配。进一步阅读该页还表明,许多其他语言也使用自己独特的时代、日期和范围。
简而言之,没有理由一种语言需要使用它正在运行的操作系统的时代时间。
https://stackoverflow.com/questions/47440356
复制相似问题