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

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

DDD
リリース: 2024-12-20 05:29:17
オリジナル
696 人が閲覧しました

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

Int96 タイムスタンプを Parquet から Go に変換する

ここでのタスクには、Parquet 形式で保存された 12 バイトの int96 タイムスタンプを、 Go と互換性のあるタイムスタンプ。 int96 形式は、タイムスタンプを 12 バイトの順序付き配列として受け入れます。最初の 8 バイトはナノ秒単位の時間を表し、残りの 4 バイトはユリウス日番号で日付を表します。

詳細な変換プロセス:

  1. 時間の順序を逆転するBytes: Int96 タイムスタンプは逆バイト順序を利用します。したがって、時間バイト (最初の 8 バイト) を反転する必要があります。
  2. ナノ秒単位で時間を計算する: 反転された時間バイトを整数として解釈して、ナノ秒単位の時間を決定します。
  3. ユリウス日番号を取得します: 残りの 4 バイトを反転して、ユリウス日番号。
  4. ユリウス日番号を日付に変換: ライブラリまたは関数を使用して、ユリウス日番号を日付オブジェクトに変換します。

例:

int96 タイムスタンプを 12 バイトとみなします配列: [128 76 69 116 64 7 0 0 48 131 37 0]

  1. 時間バイトを反転します: [0 0 0 0 29 32 4B FD 60]
  2. ナノ秒に変換します: 0x60FD4B3229000000 = 45296 * 10^9 ナノ秒
  3. 日付バイトを反転します: [0 25 68 59]
  4. ユリウス日番号に変換します: 0x59682500 = 2451545
  5. 日付に変換: 適切なライブラリ/関数を使用して、ユリウス日番号を対応する日付に変換します。この場合、2000-01-01

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート