Пояснения
Ваша проблема будет связана с тем, что значение, хранящееся в столбце времени, не находится в распознанном формате, что усложняется также несоответствием для подобного.
Распознанные форматы SQLite могутможно найти здесь SQL как понял SQLite - функции даты и времени - строки времени .
Например, ГГГГ-ММ-ДД ЧЧ: ММ: СС (например, 2018-12-09 12:40:01) является таким признанным форматом.
Ваш запрос (при условии, что 12.12.2008 12:40:01 из c # и время выполнения то же самое) говорит: -
- - 9/12/2018 12:40:01 > = 2018-12-09 12: 40: 01
, поскольку значения не числовые, проводится сравнение по символам, поэтому с использованием этих времен 9 ЕСТЬ больше 2 (конечно, если бы это было 09/12 ..... тогда НЕТ).
Правильный способ обеспечения одинакового сравнения, если базовые данные находятся в распознанном формате, состоит в том, чтобы обе стороны действительно сравнивали значения времени в реальном времени как таковые.поэтому SQL должен быть: -
SELECT count(*) FROM Ticks WHERE Value=-1 AND datetime(time) >= datetime('now', '-10 hours')
- note date (время) может потребоваться, только если дата в столбце времени была другим распознанным форматом, чем примерный формат.
- обратите внимание, что вам может потребоваться указать местное время, чтобы настроить время, например datetime(time) >= datetime('now','localtime', '-10 hours')
согласно
Местное время«Модификатор (12) предполагает, что строка времени слева от него имеет универсальное координированное время (UTC) и корректирует строку времени так, чтобы она отображала местное время.Если «местное время» следует за временем, которое не является UTC, то поведение не определено.Модификатор "utc" является противоположностью "localtime".«utc» предполагает, что строка слева находится в местном часовом поясе, и корректирует эту строку в UTC.Если предыдущая строка не по местному времени, то результат «utc» не определен.
Fix (es)
ИсправитьДля этого вам необходимо либо
- выполнить сложное переформатирование столбца времени, в зависимости от формата значения в столбце времени, для сравнения (не рекомендуется)
- или убедитесь, что значение сохранено в формате, распознаваемом SQlite.
Если время является текущим временем вставки строки тиков, вы можете использовать time DATETIME DEFAULT CURRENT_TIMESTAMP
в качестве определения для столбца time и не указывать значение для столбца time при вставке строки.
В противном случае следует изменить формат значения нараспознанный формат перед сохранением значения.