#c# #winforms #sqlite
#c# #winforms #sqlite
Вопрос:
Привет, я работаю над проектом sqlite около месяца, теперь я храню свои даты в формате «дд-ММ-гггг ЧЧ: мм: сс» (т. е. 25-03-2019 18:36:59 вечера) теперь я хочу получать записи от-до дат.
я пытался использовать эту функцию strftime с тем же форматом, но возвращается ноль строк. Мой запрос выглядит следующим образом
SELECT * FROM products as SM WHERE SM.date BETWEEN strftime('%d-%m-%Y %H:%M:%S', '24-03-2019 12:00:00 AM') AND strftime('%d-%m-%Y %H:%M:%S', '26-03-2019 12:00:00 AM')"
Вот мой код на c #, на который вы, ребята, можете посмотреть
using (SQLiteConnection con = new SQLiteConnection(LoadConnectionStringManual()))
{
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter (query,con))
{
adapter.SelectCommand.Parameters.AddWithValue("@ToDate", dttoDate.ToString("dd-MM-yyyy"));
adapter.SelectCommand.Parameters.AddWithValue("@FromDate", dtfromDate.ToString("dd-MM-yyyy"));
adapter.Fill(dtbl);
}
}
это работает, когда я удаляю предложение Where. Я не знаю, как заставить это работать, поэтому буду признателен за любую помощь.
Комментарии:
1. Функции даты и времени возвращают значение null при задании строки, которая не находится ни в одном из форматов, которые они могут обрабатывать. Смотрите список поддерживаемых форматов здесь: sqlite.org/lang_datefunc.html
2. попробуйте удалить `AM` из строки даты. если это не сработает, попробуйте изменить на
strftime('%Y-%m-%d', '2019-03-24')
3. @Shawn Спасибо, я уже изучил это и нашел решение, но дело в том, что у меня более 6000 записей, и я не хочу изменять дату для каждой из них в формате, который обрабатывает sqlite.
4. @Matt.G спасибо за предложение, но я уже пробовал это, не работает.
5. Я предлагаю сохранить ваши временные метки в одном из форматов, принятых функциями даты и времени.