ASP.NET和SQL Server的时间差,几天,小时,分钟
-
18-09-2019 - |
题
我正在使用ASP.NET和SQL Server 2005的问题跟踪应用程序。在跟踪问题时,我将截止日期存储在数据库中,并且如果有人在消息板上发布消息,则发布日期/时间也将得到存储在DB中作为DateTime。
现在,我的要求是将问题截止日期显示为“剩下2天”,只剩下2天,就像当截止日期已经过去2天之后2天的时间表时一样。我认为可以使用SQL Server datediff()来实现这一目标,但是如果我需要显示的消息,例如2小时前发布到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