Linux で gcc と PostgreSQL 8.2.19 で C++ と libpq (PostgreSQL C ライブラリ) を使用しています。「タイムゾーン付きタイムスタンプ」タイプの列を使用しています。libpq はクエリ結果を C 文字列として返します。時々 (常にではありません)、返された文字列が 1 時間前にシフトされていることがわかりました (ただし、他のタイムゾーンと同じ: +02、つまり CEST)。問題がクエリによって返される文字列 (「タイム ゾーン付きタイムスタンプ」タイプを含む列の名前を持つ通常の SELECT) に直接あり、その後の変換ではなく、ほとんどの実行が正確に実行されることを確認しました。これは Linux や PostgreSQL の (既知の) バグのようなものですか?
編集:次の変換でエラーが発生したため、プラットフォームでこのコードを試しました(明らかにライブラリを含む) http://codepad.org/HiBbjX0V 実際、これでも一貫性はありませんが、エラーは逆です:ほとんどの時間は1 時間前にシフトし、2 番目の出力でのみ、コードのように時間は 11:33:52 のままです。手動の時間設定とインターネットからの時間でUbuntuを試しました。どちらの場合もエラーがあります。エラーはシステムレベルにあると思いますが、それが何であるかはわかりません。
編集: タイムスタンプのある行が立て続けに 2 回更新され、コードで示したように Linux 型に変換された最初の更新が原因である可能性があるため、エラーが PostgreSQL からのものであるかどうかはわかりません。