Диапазон Sysdate SQL - PullRequest
       2

Диапазон Sysdate SQL

0 голосов
/ 15 октября 2018

Я пытаюсь использовать приведенный ниже запрос, чтобы найти рабочие задания, которые были закрыты в диапазоне от 1 до 4 дней с текущей даты, и мне не очень повезло.

SELECT B.ITEMNO,
       B.DESCRIP2
FROM   HIST_ILLUM_RT A,
       HIST_ILLUM_PART B
WHERE  A.TEAR_DOWN_TIME <= SYSDATE -1  AND A.TEAR_DOWN_TIME >= SYSDATE -4

Похоже, запросвытягивать все рабочие заказы закрытыми.Поле TEAR_DOWN_TIME отформатировано в ММ / ДД / ГГГГ ЧЧ / ММ / СС

Любая помощь приветствуется.Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Вам необходимо преобразовать столбцы в даты:

WHERE TO_DATE(A.TEAR_DOWN_TIME, 'MM/DD/YYYY HH24/MI/SS') <= SYSDATE - 1  AND
      TO_DATE(A.TEAR_DOWN_TIME, 'MM/DD/YYYY HH24/MI/SS') >= SYSDATE - 4

Ваша логика заключается в сравнении строк.Мораль?Храните данные, используя правильный тип данных.

0 голосов
/ 16 октября 2018

Используя ANSI join (как отметил Caius Jard) и предполагая, что первичными ключами ваших таблиц являются ID, попробуйте следующий код:

SELECT B.ITEMNO, B.DESCRIP2
FROM HIST_ILLUM_RT A
  JOIN HIST_ILLUM_PART B ON A.ID=B.ID
WHERE A.TEAR_DOWN_TIME <= SYSDATE-1 AND A.TEAR_DOWN_TIME >= SYSDATE-4;

Просто примечание: я хотел былично переписать предложение где так, чтобы TEAR_DOWN_TIME находился между датами границы, для удобства чтения, например:

WHERE SYSDATE-4 <= A.TEAR_DOWN_TIME and A.TEAR_DOWN_TIME <= SYSDATE-1
0 голосов
/ 15 октября 2018

Диапазоны обычно имеют форму «больше чем x и меньше чем y»

Вы использовали «меньше чем» дважды

Вы имели в виду

A.TEAR_DOWN_TIME >= SYSDATE -4

Другие примечания:

  • Предпочитают синтаксис соединения ANSI (внутренний / левый / правый / полный) над таблицей стилей 80-х, таблица, в которой
  • Данные даты / времени в столбце справильный тип datetime или подобный не имеет формата, строки, которые выглядят как time, имеют формат.Эта база данных может иметь формат по умолчанию, который используется при преобразовании данных типа дата / время в строку, но это не связано с тем, как хранятся данные.Всегда храните ваши данные времени в виде даты и времени, так как хранение их в виде строки может привести к снижению производительности и непредсказуемому сравнению
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...