Как искать в sqlite за час независимо от часового пояса? - PullRequest
1 голос
/ 02 мая 2020

Я хотел создать базу данных, в которой будет содержаться мой уровень сахара в крови (у меня диабет). Для каждой записи временная метка измерения сохраняется следующим образом: «2020-05-02 12:11:13 +0200».

Теперь я хочу построить данные по часам (получить тот же час разные дни).

Если я переехал в другой часовой пояс, записи для этого дня будут n часов. Например, если я хочу получить все записи за 13:00, я получу значения, которые были измерены в 04:00 в Калифорнии и 20:00 в Токио. Но я хочу получить значения 13:00 из всех этих мест / часовых поясов.

Возможно ли это, или я должен просто создать отдельный столбец для UT C и местного времени?

Я уже пробовал такие вещи:

... WHERE strftime('%H', date) = '13'
... WHERE strftime('%H', date,"UTC") = '13'
... WHERE time(date)>= time('00:00:00','+13 hour')

Решение: См. Ответ @forpas.

Я немного его изменил

strftime('%H',datetime( substr(date, 1, 19))) = '10'

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Вам нужны строковые функции для извлечения части даты YYYY-MM-DD hh:mm:ss и добавления смещения, которое может включать минуты:

where 
  strftime(
    '%H', 
    datetime(
      substr(date, 1, 19), 
      substr(date, 21, 3) || ' hour',
      substr(date, 21, 1) || substr(date, -2) || ' minute'
    )  
  ) = '13'
0 голосов
/ 02 мая 2020

очевидно, что sqlite не понимает формат вашей метки времени, поскольку формат часового пояса в конце (+0200)

не уверен, нужно ли вам использовать функцию даты / времени, но вы легко можете вычтите час с помощью substr;

 ... WHERE substr(tm, 12, 2) = '13'
...