【问题标题】:SQL; Plus + or Minus – Instead of Dates (ASP.NET-C#)SQL;加 + 或减 - 代替日期 (ASP.NET-C#)
【发布时间】:2012-02-12 00:44:26
【问题描述】:

我正在开发 ASP.NET_C# 应用程序

我在网格视图上从 SQL 中提取一些日期。

但我喜欢看“加号”或“减号-”而不是那些日期,它是今天的日期。

举例

今天的日期是 = 11/02/2012

如果 SQL 中的日期是 07/02/2012,我希望我的网格显示 -4

或者

如果 SQL 中的日期是 17/02/2012,我希望我的网格显示 +6

请帮帮我,我该怎么做……。

这是我的 SQL 查询;我正在与之合作

SELECT MAX(AmountPay.DateUpto) AS [ PaidUpTo], TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12 FROM AmountPay FULL OUTER JOIN TimeTable ON AmountPay.Ref = TimeTable.Ref WHERE (TimeTable.Time11to12 = @Time11to12) GROUP BY TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12

AmountPay.DateUpto 是我喜欢的日期,显示为 + 或 -

我被建议使用 Datediff 函数;我已经使用 datediff 函数从出生日期算出年龄,但我无法解决;我如何在案例中使用它 提前致谢

【问题讨论】:

  • 您不需要CASE。如果您将DateDiffdd 一起使用,它将自动返回天数差异(带有适当的+/- 符号)。由于您没有显示希望显示日期差异的位置,或者您希望与今天的日期不同的列名,因此我无法提供实际的 SQL 来提供帮助。

标签: c# asp.net sql date datediff


【解决方案1】:

您可以使用Timespan

DateTime oldDate = DateTime.Now.AddDays(-4);
DateTime today = DateTime.Now;

TimeSpan span = oldDate.Subtract(today);
string diff = span.Days.ToString();

【讨论】:

    【解决方案2】:

    由于您使用的是 MySQL,因此您的 select 语句应如下所示:

    SELECT DATEDIFF(CURDATE(), MAX(AmountPay.DateUpto)) AS [ PaidUpTo], 
        TimeTable.Name, 
    ......
    

    DATEDIFF 将为您提供诸如 -1、1、-5 之类的值......您的 DataGridView 应该可以很好地显示这些值。

    【讨论】:

      【解决方案3】:
      SELECT DATEDIFF(day,GetDate(), MAX(AmountPay.DateUpto)) AS [ PaidUpTo], TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12 FROM AmountPay FULL OUTER JOIN TimeTable ON AmountPay.Ref = TimeTable.Ref WHERE (TimeTable.Time11to12 = @Time11to12) GROUP BY TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12
      

      【讨论】:

        猜你喜欢
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多