C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[21619] 파이어버드 날짜 타입의 내부 기준일과 율리우스 역법
박지훈.임프 [cbuilder] 6821 읽음    2012-08-09 10:25
컴퓨터 날짜 기원의 문제. 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가 더해진 것은 율리우스일이 정오 기준이기 때문에 현대 시간법으로 보정한 것.

이렇게 오늘의 수수께끼는 풀렸음. 이제 다시 일하자.

+ -

관련 글 리스트
21619 파이어버드 날짜 타입의 내부 기준일과 율리우스 역법 박지훈.임프 6821 2012/08/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.