컴퓨터 날짜 기원의 문제. Firebird에서 Date 값이 저장되는 포맷이 필요해서 구글링을 해봤는데, 암만 뒤져도 안나와서 직접 삽질을 해서 알아냈다. 파이어버드에서 일일이 날짜를 입력하고 그 값을 HEX 에디터로 뒤지는 삽질을 수십번 반복해서. 알아낸 사실은, 1858년 11월 17일을 정수 0으로 잡고 하루가 지날 때마다 1을 더해주는 포맷이었음. 그 이전 날짜는 음수가 되고. 4바이트 정수이기 때문에, 가령 1858년 11월 16일은 -1이 됨.
원하는 답은 얻었지만, 근데 왜 하필 이 날짜일까? 하고 뒤져봄. 구글링을 하다보니 이 날짜가 OpenVMS의 기준 날짜라는 것을 알게 됐고, 더 찾다보니 파이어버드의 이전 버전인 InterBase가 OpenVMS를 사용하는 VAX에서 최초로 개발되었다는 것을 알게 됨. VAX는 PDP-11의 후속 기종이므로 PDP 시리즈에서부터 이 날짜가 기준 날짜로 쓰였을 것으로 추정. 알다시피 PDP는 전산학개론에서 꼭 언급되는 미니컴퓨터 역사의 시초.
그런데 그럼 PDP에서는 왜 이 날짜일까 하고 다시 더 검색. 간단히 말하면, 1858-11-17 날짜는 '수정율리우스일', 혹은 '수정율리우스적일'이라고 불리는 날짜임을 알게 됨. 최초의 과학적인 역법인 율리우스력에서 기준일은 BC 4713년 1월 1월 정오인데, 율리우스일, 혹은 적일이라고 불린다. 그런데 이 날짜값이 너무 커서 좀더 편의적으로 사용하기 위한 날짜를 지정했는데, 2400000.5일을 더한 결과가 1858년 11월 17일.
특정 연도의 1월 1일, 이런 식이 아니라 기존의 율리우스일에 2400000일을 더한 것은 당연히 일 단위의 날짜계산의 편의를 위한 것일테고, 0.5가 더해진 것은 율리우스일이 정오 기준이기 때문에 현대 시간법으로 보정한 것.
이렇게 오늘의 수수께끼는 풀렸음. 이제 다시 일하자.
|