带日期时间的火鸟数据库查询
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回答。
我正在尝试使用 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回答。