Выберите конкретную дату из поля даты и времени в SQLite - PullRequest
0 голосов
/ 26 января 2019

У меня есть следующие записи в таблице, столбец 3 является типом Datetime в sqlite.

sqlite> .schema candlestick
CREATE TABLE "Candlestick" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT,
  "timeframe" TEXT NOT NULL,
  "timestamp" DATETIME NOT NULL,
  "open" DECIMAL(12, 6) NOT NULL,
  "high" DECIMAL(12, 6) NOT NULL,
  "low" DECIMAL(12, 6) NOT NULL,
  "close" DECIMAL(12, 6) NOT NULL,
  "volume" DECIMAL(12, 6) NOT NULL
);

sqlite> select * from candlestick limit 10;
3668401|Europe/Berlin|1999-12-14 08:02:00+01:00|6183|6183|6183|6183|1
3668402|Europe/Berlin|1999-12-14 08:03:00+01:00|6180.5|6183|6180.5|6181|133
3668403|Europe/Berlin|1999-12-14 08:04:00+01:00|6181.5|6187.5|6181.5|6187.5|55
3668404|Europe/Berlin|1999-12-14 08:05:00+01:00|6186|6186|6184.5|6185|166
3668405|Europe/Berlin|1999-12-14 08:06:00+01:00|6182|6184.5|6180.5|6181|31
3668406|Europe/Berlin|1999-12-14 08:07:00+01:00|6181|6181|6175.5|6176|62
3668407|Europe/Berlin|1999-12-14 08:10:00+01:00|6174.5|6174.5|6174.5|6174.5|2
3668408|Europe/Berlin|1999-12-14 08:11:00+01:00|6176.5|6177|6176|6177|7
3668409|Europe/Berlin|1999-12-14 08:13:00+01:00|6174|6174|6174|6174|23
3668410|Europe/Berlin|1999-12-14 08:15:00+01:00|6174|6174|6173|6173|133

Как бы я выбрал данную дату (скажем, 1999-12-15) из всех регистров?То есть все регистры, которые относятся к тому дню, независимо от того, сколько времени у них есть.

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Простой способ - использовать неравенства:

where timestamp >= '1999-12-15' and
      timestamp < '1999-12-16'

Эта формулировка позволяет SQLite использовать индексы для извлечения значения - если доступен соответствующий индекс.

SQLite также имеет функцию date() (которая на самом деле strftime() является основой всех функций даты / времени SQLite). Так же вы можете написать:

where date(timestamp) = '1999-12-15'
0 голосов
/ 26 января 2019

Тип данных столбца "timestamp" на самом деле TEXT в SQLite ,так что вы можете использовать функцию substr () для извлечения только части даты:

select * from candlestick
where substr(timestamp, 1, 10) = '1999-12-15'

Такой же результат можно получить с помощью оператора like :

select * from candlestick
where timestamp like '1999-12-15%'

См. ссылку для получения дополнительной информации о SQLite типы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...