5

Sybase テーブルに datetime フィールドがあり、Perl でいくつかの計算を行うためにそれを使用する必要があります (少なくとも 'n' 分離れたレコードを取得していることを確認するための違い)。ここで、単純に select <datetime field> を実行すると、Sybase は人間が読めるフィールドを返しますが、これは役に立ちません。これをエポックベースの時間に変換する方法を探していました。これにより、Perl で簡単に操作できるようになります。

私は間違っているかもしれませんが、Sybase にはこれに対する既存の関数が見つかりませんでした。私が得た最も近いのはdatediffで、これは私の目的をうまく果たしています。実際、私は今のところ回避策としてそれを使用しています。datediff の問題は、整数の制限によるもので、上限は 68 年です。私のコードがおそらくその時まで出回らないことはわかっていますが、なぜそのような時間ベースの制限を独自に導入するのでしょうか?

これを回避する方法はありますか?

ありがとう!

4

3 に答える 3

4

クライアントでそれを行うことに問題がなければ、Time::ParseDate モジュールがその作業を行うことができるはずです。

于 2009-02-10T02:28:23.190 に答える
2

日付/時刻の計算を処理する必要がある場合、DateTimeモジュールは役に立ちました。

DBD :: Sybasesyb_date_fmt()メソッドを使用してフォーマットを制御してから、DateTime :: Format :: Strptimeを使用して結果を解析し、DateTimeオブジェクトを生成します。DateTimeepochメソッドを使用してエポック時間を取得するか、適切なDateTime::Durationオブジェクトを使用して計算を実行することをお勧めします。

于 2009-02-10T04:10:08.403 に答える
1

Sybase と Perl が協力して本物の DateTime オブジェクトまたは類似のもの (Time::Piece など) を提供できない場合、私が通常そのようなことを処理する方法は、データベースに ISO 標準の日付を提供するよう説得することです。 (YYYY-MM-DDTHH:MI:SS) の形式で変換し、そこから変換します。

于 2009-02-10T07:14:48.820 に答える