2013-09-08 5 views
0

я извлечения данных из базы данных Sqlite используя следующий запрос в C#Извлечение данных из SQLite на основе даты

SELECT * FROM tableName 

Это прекрасно работает. Но я хочу, чтобы получить данные на основе даты, как:

SELECT * FROM tableName WHERE date=09-09-2013 

Но это сделать не работает для меня, потому что дата Sqlite представление не в этом формате даты. Я хочу спросить, есть ли какой-либо метод, с помощью которого данные Sqlite могут быть получены на основе пользовательских дат и времени, как упомянуто в предыдущем запросе, и как я могу представить дату и время базы данных Sqlite в читаемом для пользователя формате.

+0

Возможно, вы захотите найти больше этого 'strftime' в sqlite. –

+1

Используйте параметризованный запрос. – Steve

+0

'09-09-2013' - три числа, вычитаемые друг из друга. Может быть, вы хотели использовать строку ''09 -09-2013''? –

ответ

2

Параметризированный запрос будет освободить свой код от форматирования, необходимым для даты, строки и десятичных различного СУБДОМ

using (SqliteConnection con = new SqliteConnection(connectionString)) 
{ 
    con.Open(); 
    string commandText = "SELECT * FROM tableName WHERE [email protected]"; 
    using (SqliteCommand cmd = new SqliteCommand(commandText, con)) 
    { 
     cmd.Parameters.AddWithValue("@dt", yourDateVariable) 
     SqliteReader reader = cmd.ExecuteReader(); 
     while(reader.Read()) 
     { 
      // Extract your data from the reader here 
      ..... 
     } 
    }    
} 

Смысла этого примера, чтобы показать, как построить параметризованный запрос. Таким образом вы передаете значение переменной datetime в среду движка Sqlite, которая лучше знает, как форматировать дату для базовой системы.

В commandText переменном фактическом значении отформатированного на дату принимается заполнителем @dt, а затем добавить к коллекции SqliteCommand параметров, параметр с тем же именем заполнителя и значением из переменной даты.