ホームページ >バックエンド開発 >Golang >Parquet Int96 タイムスタンプを Go タイムスタンプに変換するにはどうすればよいですか?

Parquet Int96 タイムスタンプを Go タイムスタンプに変換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 17:41:10885ブラウズ

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

Parquet から Go への Int96 タイムスタンプのキャスト

タイムスタンプを表す int96 値を Parquet ファイルから Go タイムスタンプにキャストするには、次の手順に従います手順:

  1. Int96 値の分離: int96 タイムスタンプは 2 つの部分で構成される 12 バイトの配列です:

    • 最初の 8 bytes: ナノ秒単位の時間、反転バイトで保存order
    • 最後の 4 バイト: ユリウス日の数値としての日付
  2. 最初の 8 バイトからの解析時間:

    • バイトを反転して正しい時刻値を取得します(指定された例では 0x000029324BFD6000)
    • 値を 10^9 で割ってナノ秒を秒に変換します (この場合は 45296 秒)
  3. 過去 4 件から日付を抽出バイト:

    • バイトを反転してユリウス日番号を取得します (例では 0x00256859)。
    • ライブラリを使用するか、手動で計算してユリウス日番号を Go に変換します。タイムスタンプ (この中では 2000-01-01 12:34:56) case)
  4. Compose Timestamp: 解析された時刻と日付を組み合わせて、元の int96 値を表す Go タイムスタンプを作成します。

注: Parquet の int96 タイムスタンプは、エポックだけど真夜中から。 Go タイムスタンプに変換するときは、この点に留意してください。

以上がParquet Int96 タイムスタンプを Go タイムスタンプに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。