2015-02-05 4 views
2

Я пытаюсь выполнить запрос к базе данных Firebird с помощью C# и не имею что-то совершенно правильное. Обратите внимание, что я выполняю этот запрос с примера базы данных employee.fdb, который вы получаете при установке Firebird.запрос базы данных firebird с датой времени

Следующие работы.

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.

И что бы я хотел сделать, просто использовать объект 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 в качестве параметра для запроса?

+0

Каков тип данных 'HIRE_DATE'? –

+0

@MarkRotteveel HIRE_DATE имеет тип Timestamp – denver

ответ

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 сделать замену для меня. Если кто-нибудь знает, как, пожалуйста, напишите ответ.

Смежные вопросы