具有日期时间的firebird数据库查询

时间:2015-02-05 17:24:37

标签: c# sql entity-framework datetime firebird

我正在尝试使用c#对Firebird数据库执行查询,并且没有正确的东西。请注意,我正在对安装Firebird时获得的employee.fdb数据库示例执行这些查询。

以下作品。

string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > '02.01.1990, 03.04.05.000'";

using (FbConnection connection = new FbConnection(connectionString))
using (DataContext db = new DataContext(connection))
{
    List<employee> results = db.ExecuteQuery<employee>(query).ToList();
}

如果我参数化日期。

string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > {0}";

using (FbConnection connection = new FbConnection(connectionString))
using (DataContext db = new DataContext(connection))
{
    List<employee> results = db.ExecuteQuery<employee>(query, "02.01.1990, 03.04.05.000").ToList();
}

我收到System.FormatException:String未被识别为有效的DateTime。

我真正想做的就是使用DateTime对象。

string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > {0}";

using (FbConnection connection = new FbConnection(connectionString))
using (DataContext db = new DataContext(connection))
{
    DateTime a = new DateTime(1990, 1, 2, 3, 4, 5);
    List<employee> results = db.ExecuteQuery<employee>(query, a).ToList();
}

但后来我得到一个System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。

有人知道如何使用DateTime作为查询的参数吗?

1 个答案:

答案 0 :(得分:0)

我没有找到问题的答案。我最后通过手动进行参数替换来解决这个问题。

string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > ";

string query = query + "'" + hireDate.ToString("dd.MM.yyyy, HH.mm.ss.fff") + "'";

然后使用了ExecuteQuery的其他重载

List<employee> results = db.ExecuteQuery<employee>(query).ToList();

我仍然有兴趣让ExecuteQuery替换我。如果有人知道如何,请发一个答案。