>백엔드 개발 >Golang >Parquet Int96 타임스탬프를 Go 타임스탬프로 어떻게 변환합니까?

Parquet Int96 타임스탬프를 Go 타임스탬프로 어떻게 변환합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-21 17:41:10818검색

How Do I Convert a Parquet Int96 Timestamp to a Go Timestamp?

Parquet에서 Go로 Int96 타임스탬프 캐스팅

Parquet 파일의 타임스탬프를 Go 타임스탬프로 나타내는 int96 값을 캐스팅하려면 다음을 따르세요. 단계:

  1. Int96 값 분리: int96 타임스탬프는 두 부분으로 구성된 12바이트 배열입니다.

    • 처음 8 bytes: 나노초 단위의 시간, 역방향 바이트로 저장됨 order
    • 마지막 4바이트: 율리우스력 일수로 표시된 날짜
  2. 처음 8바이트부터 구문 분석 시간:

    • 올바른 시간 값을 얻으려면 바이트를 반대로 하세요. (주어진 예에서는 0x000029324BFD6000)
    • 값을 10^9로 나누어 나노초를 초(이 경우 45296초)로 변환합니다.
  3. 지난 4일에서 날짜 추출 바이트:

    • 바이트를 뒤집어 율리우스력 일수(예에서는 0x00256859)를 얻습니다.
    • 라이브러리를 사용하거나 수동으로 계산하여 율리우스력 일수를 Go로 변환합니다. 타임스탬프(2000-01-01 12:34:56 이 경우)
  4. 타임스탬프 작성: 구문 분석된 시간과 날짜를 결합하여 원래 int96 값을 나타내는 Go 타임스탬프를 만듭니다.

참고: Parquet의 int96 타임스탬프는 epoch이지만 자정부터. Go 타임스탬프로 변환할 때 이 점을 명심하세요.

위 내용은 Parquet Int96 타임스탬프를 Go 타임스탬프로 어떻게 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.