2012-05-11 80 views
1

我的問題是試圖使用SELECT語句,並通過一定的列順序前10名。我在搜索了很多論壇之後設法編譯了一些東西,但是我需要確認一個字段中的時間戳是在最後一週內。我得到這個然而執行我不知道這是否是正確的,因爲我無法打印的where子句中值:選擇使用時間戳的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時間戳不到一週大?

回答

4

它會更有意義地說

WHERE date_rated > sysdate - interval '7' day 

,如果你想從上次168小時數據。你可能想

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

如果你4天前想從任意點數據的日子,而不是關心它是什麼時間目前。

0

這是不是對你的工作:

trunc(CURRENT_TIMESTAMP - DATE_RATED) < 7 

這是假設DATE_RATED是日期字段。如果不是,則需要先將其轉換爲TO_DATE()

+0

這將引發ORA-00932:不一致的數據類型:預期數量得到INTERVAL DAY TO SECOND – arturro

+0

如果是這種申請,那麼你需要轉換爲日期的時間戳。你的表格定義是什麼? – BrianM