2012-05-11 3 views
1

моя проблема пытается использовать оператор SELECT и заказывать первую десятку по определенному столбцу. Мне удалось скомпилировать что-то после поиска по многим форумам, однако мне нужно подтвердить, что метка времени в одном поле находится за последнюю неделю. Я получил это выполнить, однако я не уверен, является ли правильным, как я не могу напечатать значение ИНЕКЕ:SELECT используя временную метку в Oracle SQL

SELECT itemid, count(itemid) 
FROM Rateddate 
WHERE TO_CHAR(CURRENT_TIMESTAMP - DATE_RATED) < TO_CHAR(7) 
GROUP BY itemid; 

TLDR:

TO_CHAR(CURRENT_TIMESTAMP - DATE_RATED) < TO_CHAR(7) 

ли это сделать конечно date_rated timestamp меньше недели?

ответ

4

Было бы больше смысла говорить

WHERE date_rated > sysdate - interval '7' day 

если вы хотите данные за последние 168 часов. Вы можете

WHERE date_rated > trunc(sysdate) - interval '7' day 

, если вы хотите, чтобы данные из любой точки в день 7 дней назад, а не заботясь о том, какое время суток это в настоящее время.

0

Не будет ли эта работа для вас:

trunc(CURRENT_TIMESTAMP - DATE_RATED) < 7 

Это предполагает, что DATE_RATED это поле даты. Если нет, вам нужно сначала преобразовать его с TO_DATE().

+0

это бросает ORA-00932: непоследовательные типы данных: ожидается НОМЕР получил ИНТЕРВАЛ ДЕНЬ ВТОРОМ – arturro

+0

Если это временная метка, то вам нужно указать дату. Каково определение вашей таблицы? – BrianM

Смежные вопросы