我有一个数据表,其中包含我需要删除并插入另一个数据表的行。我正在选择列SLA<比今天的日期(SLA<'#date#')。当我这样做时,我的新数据表中的数据不正确。我得到的日期晚于今天的日期。我不知道我错了什么。 SLA列日期语法为 dd-MM-yyyy HH:mm 。
这是我的代码:
public SLAWarningHandler()
{
}
public DataTable SLAWarningData(DataTable queryData)
{
DataTable data = queryData;
try
{
DateTime date = DateTime.Now;
DataRow[] rows = data.Select("SLA < '#" + date + "#'");
DataTable actual = new DataTable();
actual = data.Clone();
foreach (DataRow row in rows)
{
actual.ImportRow(row);
}
}
catch (Exception exception)
{
throw exception;
}
return data;
}
我试图将date参数转换为如下字符串:
date.ToString("dd-MM-yyyy HH:mm")
但这并没有帮助。
有人可以指出我的问题吗?
谢谢!
答案 0 :(得分:1)
你的问题是你回错了。您必须返回实际,但返回的数据是原始记录集。
public DataTable SLAWarningData(DataTable queryData)
{
DataTable actual = null;
DataTable data = queryData;
try
{
DateTime date = DateTime.Now;
DataRow[] rows = data.Select("SLA < '#" + date + "#'");
actual = data.Clone();
foreach (DataRow row in rows)
{
actual.ImportRow(row);
}
}
catch (Exception exception)
{
throw exception;
}
return actual;
}
答案 1 :(得分:0)
使用标准ISO格式(yyyyMMdd hh:mm:ss):
DataRow[] rows = data.Select(string.Format("SLA < '{0}'", date.ToString("yyyyMMdd hh:mm:ss"));
或者:
DataRow[] rows = data.Select(string.Format("SLA < '{0}'", date.ToString(DateTimeFormatInfo.InvariantInfo));