ASP.NETおよびSQLサーバーの時間差日数、時間、議事録
-
18-09-2019 - |
質問
私は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
所属していません StackOverflow