0

私はasp.netとSQLサーバー2005で問題追跡アプリケーションに取り組んでいます。問題を追跡している間、データベースに日時として締め切りを保存しています。また、誰かがメッセージボードにメッセージを投稿すると、投稿日時も取得されます日時としてデータベースに保存されます。

今、私の要件は、発行期限が2日しか残っていないときに「残り2日」として表示することです。これはSQLサーバーのdatediff()で達成できると思いますが、メッセージの場合、2時間3分前に投稿されたように表示する必要があります....または3日18時間前に投稿された、または同様のもの...( 1日でも前に掲載されていれば時間をなくすことができます)。

Google を試してみましたが、有用なものが見つかりませんでした。だろう; いつものようにあなたの親切な助けに感謝します.

前もって感謝します。

4

2 に答える 2

3

これを SQL で行う代わりに、.NET TimeSpan構造体を使用してこの機能を取得できます。

ある日付を別の日付から差し引くことで取得でき、必要な時間/分/秒の詳細が得られます。

于 2009-12-09T12:16:46.167 に答える
0

次のクエリのバリエーションを使用し、必要に応じて調整します。他の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
于 2009-12-09T15:09:54.180 に答える