DataTable选择方法,日期不显示正确的结果

时间:2014-11-18 09:48:41

标签: c# .net jquery-datatables

我有一个数据表,其中包含我需要删除并插入另一个数据表的行。我正在选择列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")

但这并没有帮助。

有人可以指出我的问题吗?

谢谢!

2 个答案:

答案 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));