質問

私はASP.NETおよびSQL Server 2005で問題追跡アプリケーションに取り組んでいます。問題を追跡しながら、締め切りをデータベースにDateTimeとして保存しています。 DBにDAとして保存されます。

ここで、私の要件は、締め切りが2日間であるときと同じように、2日間しか残っていないときに「2日間の残り」として問題の締め切りを示すことです。これはSQL Server datediff()で達成できると思いますが、2時間前に投稿する必要があるメッセージの場合は、3分前に投稿するか、3日前に投稿するか、類似したもの... 1日前でも投稿されていれば、時間を排除できます)。

Googleを試しましたが、役に立つものは見つかりませんでした。します;いつものようにあなたの親切な助けに感謝します。

前もって感謝します。

役に立ちましたか?

解決

次のクエリでバリエーションを使用し、必要に応じて調整します。他のRDBMSの場合、日付関数を適切な同等物に置き換えます。

SELECT  CASE
          WHEN DateValue-GETDATE() >= 1 THEN CAST(DATEPART(dy, DateValue-GETDATE()) AS varchar) + ' day(s) remaining'
          WHEN DateValue-GETDATE() >= 0 THEN CAST(DATEPART(hh, DateValue-GETDATE()) AS varchar) + ' hour(s) remaining'
          /*Note, it's convenient to switch around for negatives*/
          WHEN GETDATE()-DateValue <= '00:59' THEN CAST(DATEPART(mi, GETDATE()-DateValue) AS varchar) + ' minutes(s) overdue'
          WHEN GETDATE()-DateValue <= 1 THEN CAST(DATEPART(hh, GETDATE()-DateValue) AS varchar) + ' hours(s) overdue'
        ELSE
          CONVERT(varchar, DateValue-GETDATE(), 121)
        END AS Time_Scale

他のヒント

これをSQLで行う代わりに、.NETを使用できます 期間 この機能を取得するためのstruct。

あなたはそれを手に入れることができます 減算 別の日付から、必要な時間/分/秒の詳細が提供されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top