Почему дата kdb+ эпоха 2000.01.01?

Я новичок в kdb+ и мне было интересно, почему дата 2000.01.01 для kdb отличается от эпохи unix (1970.01.01).

Влияет ли разница на взаимодействие с операционной системой или другими языками?

3 ответа

Решение

KDB+ использует другую эпоху, потому что она следует другому стандарту. KDB+ соответствует международному стандарту J2000, который основан на юлианском году.

UNIX использует время POSIX, которое изначально было 32-разрядным целым числом без знака. Поскольку время рассчитывалось с точностью до 60-х секунд, 32-разрядное целое число будет работать только около 829 дней, поэтому пришлось выбирать более позднюю дату.

В первом издании Руководства программиста Unix от 3 ноября 1971 года время Unix определяется как "время с 00:00:00, 1 января 1971 года, измеренное в шестидесятых секундах".

Эта разница может вызвать проблемы, если вы не уверены, что хотите конвертировать в один стандарт, прежде чем отправлять выбранное время эпохи в приложения.

Проблемы, связанные с взаимодействием с системными / другими языками, должны решаться благодаря тому факту, что KDB может анализировать метки времени эпохи UNIX.

с http://code.kx.com/q/ref/casting/

Разбор меток времени Unix (от секунд, прошедших с эпохи Unix), строка с 9…11 цифрами:

q)"P"$"10129708800"
2290.12.31D00:00:00.000000000
q)"P"$"00000000000"
1970.01.01D00:00:00.000000000

Kdb+ доступен во многих различных операционных системах, в настоящее время Windows, Linux-x86, Linux-ARM и 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 означало бы, что другой не совпадает в любом случае. Дальнейшее чтение на этой странице также показывает, что многие другие языки также используют свои собственные различные даты и диапазоны эпох.

Короче говоря, нет никакой причины, по которой языку нужно использовать время эпохи ОС, на которой он работает.

Другие вопросы по тегам