计算天数

时间:2011-09-07 04:48:46

标签: c# asp.net

我想计算SQL数据库中字段'complaintdate'的天数。 在此字段中存储用户注册投诉的日期。我希望从当前日期开始查看20天及以上的投诉。

是否还有其他功能或方法来计算天数? 我使用的代码是

cmd = new SqlCommand("select complaintdate from complaintregister where compstatus='Attended & Open'", con);
rd = cmd.ExecuteReader();
if (rd.Read())
{
    string s = rd["complaintdate"].ToString();
}

我通过

显示's'
Response.Write(s);

并以此格式显示4/5/2011 12:00:00 AM

`

3 个答案:

答案 0 :(得分:3)

这会将totalDays检索为complaintDate和今天之间的天数。用您的检索方式替换GetDateFromDatabase()

DateTime complaintDate = GetDateFromDatabase();
int totalDays = (int)(DateTime.Now - complaintDate).TotalDays;
if (totalDays >= 20)
{
    // Perform your actions here. 20+ days have elapsed.
}

编辑:

我添加了以下代码以使用您在编辑中提供的代码。我假设变量cmdconrd在代码中的其他位置声明。

cmd = new SqlCommand("select complaintdate from complaintregister where compstatus='Attended & Open' ", con);`
rd = cmd.ExecuteReader();
if (rd.Read())
{
    string s = rd["complaintdate"].ToString();
}

DateTime complaintDate;
try
{
    complaintDate = Convert.ToDateTime(s);
}
catch
{
    Response.Write("An error occurred while trying to convert the date!");
    return;
}

int totalDays = (int)(DateTime.Now - complaintDate).TotalDays;
if (totalDays >= 20)
{
    // Perform your actions here. 20+ days have elapsed.
}

答案 1 :(得分:3)

根据您的问题,我不确定您是否要在数据库或代码中进行此比较。

如果要在SQL Server中进行检查,可以使用DATEDIFF函数。

如果您要执行签入代码,可以使用DateTime.Subtract

var complaintDate = new DateTime(2011, 9, 1);
var daysSinceComplaint = (int)DateTime.Now.Subtract(complaintDate).TotalDays;
Console.WriteLine(daysSinceComplaint);

答案 2 :(得分:0)

SQL Server中的另一个解决方案是在表中放入一个计算字段,显示已经过了多少天。如果CompliantDate为null,则显示Null

ALTER TABLE ComplianceTable ADD
DaysLapsed  AS datediff(dd,CompliantDate,getdate())
GO