2016-07-05 2 views
0

У меня есть база данных SQLite, где я пытаюсь получить все строки с крайним сроком (созданные как DATETIME, typeof (крайний срок) возвращает текст) после сегодняшнего дня. Вот сроки совпавшие с сегодняшнего дня:SQLite date weirdness

sqlite> SELECT deadline, Date('now') FROM confs; 
2016-08-28|2016-07-05 
2016-06-30|2016-07-05 
... 

Теперь, если я пытаюсь выбрать даты за сегодня:

sqlite> SELECT deadline FROM confs WHERE deadline > Date('now') 
sqlite> 

строки не возвращаются. С другой стороны,

sqlite> SELECT deadline, Date('now') FROM confs WHERE deadline < Date('now'); 
2016-08-28|2016-07-05 
2016-06-30|2016-07-05 
... 

Я пробовал:

  • создания таблицы с «крайнего срока» типа текста - нет успеха, тот же результат.
  • листинг либо крайний срок, либо дата ('now') как текст - не успех, тот же результат.
  • литье и крайний срок и дата ('сейчас') в виде текста - не успех, тот же результат.
  • с использованием крайнего срока использования ГДЕ> '2016-07-05' - никакого успеха, такого же результата.
  • с использованием предложения TimBiegelsen: WHERE deadline> STRFTIME ('% Y-% m-% d', 'now') - нет успеха, такого же результата.

Я думаю, что проблема связана с типом крайнего срока, но это предположение.

Цель состоит в том, чтобы иметь таблицу с одним столбцом, содержащей даты, где я могу выбрать даты после даты («сейчас»). Что я делаю не так?

+0

@TimBiegeleisen: создается как DATETIME NOT NULL. SELECT typeof (крайний срок) FROM confs возвращает «текст» –

+0

Примечание: 'выберите крайний срок от confs, где deadline = '2016-08-28';' не возвращает строки, - поэтому, вероятно, проблема со значениями или типами в эта колонка. –

+0

Столбец 'deadline' находится в странном формате. Вместо этого попробуйте использовать «STRFTIME (крайний срок)». –

ответ

0

Хорошо, глупо меня. Оказывается, что я сделал ошибку ввода данных: крайние сроки начинаются с пробела.