0

ISO 8601 3.5.2 に準拠しているため、具体的にはスタンドアロン (結合されていない) 時間データ型 (例: 18:50) が結合された DateTime (タイムスタンプ) 型とは異なるため、PostgreSQL を検討しています。関連する PostgreSQL 9.2を参照してください。ドキュメント. Time of Day データ型は、24 時間制に基づいており、カレンダーとは関係がなく、00:00 から 24:00 まで実行されます。

Windows デスクトップがあり、.NET 用の npgsql プロバイダーの使用を検討しています。しかし、npgsqlTime 型の npgsql プロバイダーのドキュメントによってスローされてますHoursインスタンス プロパティは次のようになります。

インスタンスに保持されている全体の時間数を取得します。24:00:00 の時刻は、往復の互換性のために保存できることに注意してください。そのような値の計算は、 [原文のまま] 00:00:00 に正規化されます。【私のこだわり】

「そのような値」は「24:00:00」を指します。次のようにnpgsqlTimeの 2 つのインスタンスを作成する場合、このドキュメントを正しく理解していますか?

    NpgsqlTime midnightTonight = new NpgsqlTime(24,0,0);
    NpgsqlTime midnightThisMorning = new NpgsqlTime(0,0,0);

次に Subtract メソッドを呼び出します。

    midnightTonight.Subtract(midnightThisMorning);

MidnightTonightは (プロバイダーによって静かに) 00:00 に正規化され、減算メソッドの結果は 24 時間ではなく 0 時間の間隔になりますか?

または、Times を 2 つインスタンス化すると、次のようになります。

   NpgsqlTime midnightTonight = new NpgsqlTime(24,0,0);
    NpgsqlTime lateAfternoon = new NpgsqlTime(16,0,0);

そして減算:

    midnightTonight.Subtract(lateAfternoon);

8 時間ではなく 16 時間の間隔が得られるでしょうか?

編集: PostgreSQL と Npgsql の両方がインストールされ、テストできるようになったので、Subtract() では 24:00 から 00:00 へのサイレント「正規化」は発生しないようですが、Add() では発生します。

編集: Subtract() は問題ありません。答えを 8 にしたいのですが、それは 8 です。

特にパブリック API に Normalize() メソッドがあるため、Subtract() で発生しないことを嬉しく思います。また、Add() でデフォルトで発生しないことを望みます。

4

0 に答える 0