带日期时间的火鸟数据库查询

firebird database query with date time

我正在尝试使用 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:字符串未被识别为有效的日期时间。

我真正想做的就是使用 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 作为查询参数吗?

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

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 为我做替换。如果有人知道怎么做,请post回答。