2013-05-16 29 views
-1

我想要獲取當前日期的所有行的計數。如何從時間戳中檢索日期 - sql

Column name = LOGIN_TIME (format is TIMESTAMP) 

現在我有USER_NAMESUBJECT值。

表結構:現在

USER_NAME SUBJECT LOGIN_TIME 
----------------------------------- 
abc   physics 01-MAY-13 12.27.50.863000000 AM 
abc   math  02-MAY-13 01.01.47.863000000 PM 
def   physics 16-MAY-13 06.42.48.863000000 PM  
abc   physics 16-MAY-13 02.29.11.863000000 PM 

,與user_name='aaa'subject = 'physics'current date (of REQUEST_TIME),我想中檢索的行數。

請幫我看看這個查詢。

+0

*修正: USER_NAME ='abc'and subject ='physics' – user2388729

回答

0

該查詢應該完成這項工作。只需將Table_name替換爲表格的實際名稱即可。

SELECT Count(*) FROM Table_Name WHERE USER_NAME = 'abc' AND SUBJECT = 'physics' AND TRUNC(LOGIN_TIME) >= TRUNC(SYSDATE - 1) 
+0

感謝您的回覆。但我得到一個錯誤,當我在oracle sql developer中運行這個腳本: 錯誤從命令行中的第1行開始: SELECT Count(*)FROM table_name WHERE user_name ='abc'AND subject ='physics'AND login_time(timestamp) =日期(NOW()) 錯誤在命令行:2列:51 錯誤報告: SQL錯誤:ORA-00936:缺少表達 00936. 00000 - 「失蹤表達」 *原因: *動作: – user2388729

+0

沒有你改變Table_name? –

+1

@ user2388729:答案對於Oracle無效,並且在明確表示您正在使用Oracle - **之前發佈,您應該從頭開始說明**。 'now()似乎表明它是用於SQL Server或MySQL的。但是,如果我沒有弄錯,表達式'LOGIN_TIME(timestamp)'在任何數據庫中都是無效的。 –

2

當您用SQL Developer標記問題時,我假設您使用的是Oracle。

在這種情況下,您可以使用trunc()函數「刪除」時間戳記的一部分(或date)列。 「移除」意味着它被設置爲00:00:00。您還需要做到這一點爲current_datesysdatecurrent_timestamp爲所有的人(包括current_date)的隨身攜帶

的時候說了這麼多,結果會是這樣的:

select count(*) 
from the_table 
where user_name = 'abc' 
    and subject = 'physics' 
    and trunc(login_time) = trunc(current_date) 
+0

Blimey!謝謝 :) – user2388729