我正在使用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

其他提示

您可以使用.NET,而不是在SQL中这样做 时间跨度 结构以获取此功能。

你可以得到它 减去 一个约会的日期,它为您提供所需的小时/分钟/秒详细信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top