我想计算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
`
答案 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.
}
编辑:
我添加了以下代码以使用您在编辑中提供的代码。我假设变量cmd
,con
和rd
在代码中的其他位置声明。
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