Какой SQL-запрос в sqllite нужно рассчитать по сегодняшней отметке времени, используя время в секундах? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть таблица базы данных SQLite tasks (или задачи в моей собственной системе управления проектами).У меня есть столбцы start_date, которые являются меткой времени начала задачи в секундах.Тогда столбцы lifetime - время работы с заданием в секундах.

Мне нужно написать запрос SQL, чтобы получить задачи, которые все еще открыты.Мне нужно

startdate + lifetime < today's timestamp

Я использую время начала UNIX-начала.

Похоже:

tasks.start_date  tasks.lifetime  functionToCalculateSecondsFromUnixBirthday
1551528199281 + 8650010 > 1551566849291

Я пробовал:

SELECT * 
FROM tasks 
WHERE (tasks.start_date + tasks.lifetime) > strftime('%s','now');

возвращает все из задач в наборе результатов, может быть что-то с арифметическим синтаксисом?

Объявление таблицы:

CREATE TABLE IF NOT EXISTS `tasks`
(
     `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 
     `name` TEXT, 
     `project_id` INTEGER, 
     `start_date` TEXT, 
     `lifetime` TEXT, 
     `targetinfo` TEXT
);

1 Ответ

0 голосов
/ 04 февраля 2019

1551566849291 включает миллисекунды, в то время как strftime('%s','now') - только секунды.

То есть strftime('%s','now') приводит к 1549308478 , поэтому происходитбыть значительно ниже, чем 1551566849291 .

возможно использовать: -

SELECT * 
FROM tasks 
WHERE (tasks.start_date + tasks.lifetime) > (strftime('%s','now') * 1000);
...