#sql #oracle
#sql #Oracle
Вопрос:
У меня есть инструкция sql, которая подсчитывает блоки (кабельные коробки), которые были отремонтированы (заменены поврежденные детали), и общее количество блоков (кабельные коробки, которые только что прошли ремонт и ничего не было заменено), и предполагается, что этот подсчет выполняется регулярно (каждый раз, когда блок обрабатывает подсчет). Кто-нибудь, пожалуйста, может мне помочь? Спасибо.
Джастин
Вот мой sql-код на данный момент:
ВЫБЕРИТЕ COUNT(*) ИЗ cxadminn.repair_part
ГДЕ repair_type = ‘REFURB’ и created_date >?
Комментарии:
1. попробуйте … и created_date > :date Toad предложит вам ввести значение переменной bind, которое для дат будет иметь приятный календарь 🙂 Или найдите функцию to_date для Oracle (лучший подход 😉
Ответ №1:
SELECT COUNT(*)
FROM cxadminn.repair_part
WHERE repair_type = 'REFURB'
and created_date > sysdate
Чтобы исключить время, которое является частью любого столбца даты oracle, вам нужно будет использовать это:
SELECT COUNT(*)
FROM cxadminn.repair_part
WHERE repair_type = 'REFURB'
and trunc(created_date) > trunc(sysdate)
Комментарии:
1. Вы могли бы использовать
and created_date >= trunc(sysdate) 1
, чтобы разрешить использование индекса наcreated_date
, если такой индекс существует.
Ответ №2:
Я думаю, вам нужны текущие дата и время при выполнении запроса, что не совпадает с created_date, верно?
select COUNT(*),
to_char(sysdate, 'Dy DD-Mon-YYYY HH24:MI:SS') as "Current Time"
FROM cxadminn.repair_part
WHERE repair_type = 'REFURB'
Я удалил and created_date >?
из предложения WHERE, потому что для меня это не имеет смысла, если только в вашей таблице не могут быть элементы, created_date которых находится в будущем.
Ответ №3:
SELECT COUNT(*) FROM cxadminn.repair_part
WHERE repair_type = 'REFURB' and created_date > sysdate
или
created_date > to_date('01.01.11 01:01:01', 'dd.mm.yyyy hh:mi:ss')