SQL дата и время установлены - PullRequest
0 голосов
/ 08 января 2019

Консоль должна показывать информацию об device_id № 1, потому что она не обновлялась более 1 года, но я получил device_id 1 и 3

Я уверен, что проблема в этом WHERE last_checking_date + 365 <’2019.01.09’ AND type = ‘termometr’; но я не могу это исправить, как установить datetime для моего состояния </p>

CREATE TABLE workspaces ( 
workspace VARCHAR (255) NOT NULL, 
device_id INTEGER NOT NULL REFERENCES devices(id), 
setup_date DATETIME, 
last_checking_date DATETIME, 
checking_result VARCHAR (255) 
); 

CREATE TABLE devices ( 
id INTEGER PRIMARY KEY NOT NULL UNIQUE, 
type VARCHAR (255), 
realize_date DATETIME, 
accuracy FLOAT 
); 

INSERT INTO workspaces (workspace, device_id, setup_date, last_checking_date, checking_result)
VALUES ('plavka_metalla', ‘1’, '1993.01.11', '1993.01.12', 'Perfect');

INSERT INTO workspaces (workspace, device_id, setup_date, last_checking_date, checking_result)
VALUES ('him_zona', ‘2’, '1993.01.21', '2019.01.04', 'Perfect');

INSERT INTO workspaces (workspace, device_id, setup_date, last_checking_date, checking_result)
VALUES ('metallurgiya', ‘3’, '1994.02.24', '2019.01.04', 'Perfect');

INSERT INTO devices (id, type, realize_date, accuracy)
VALUES ('1', 'termometr', '1993.01.20', '0.91');

INSERT INTO devices (id, type, realize_date, accuracy)
VALUES ('2', 'air_checker', '2013.03.07', '0.94');

INSERT INTO devices (id, type, realize_date, accuracy)
VALUES ('3', 'termometr', '2013.09.27', '0.99');

SELECT workspace, device_id, type FROM workspaces INNER JOIN devices ON workspaces.device_id = devices.id WHERE last_checking_date + 365 < ’2019.01.09’ AND type = ‘termometr’;

1 Ответ

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

Во-первых, вместо сохранения литералов даты как 2019.01.09, сохраните их как 2019-01-09. Затем попробуйте использовать функцию date в своем запросе:

SELECT
    workspace,
    device_id,
    type
FROM workspaces w
INNER JOIN devices d
    ON w.device_id = d.id
WHERE
    DATE(last_checking_date, '+1 years') < '2019.01.09' AND
    type = 'termometr';

Обратите внимание, что я специально добавляю 1 год здесь, а не 365 дней, исходя из того, что вы подразумеваете год. Високосные годы, которые происходят каждые четыре года, имеют 366 дней, а не 365.

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