如何从时间戳中检索日期--sql

时间:2013-05-16 07:13:23

标签: sql oracle

我想获得当前日期的所有行的计数。

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),我想要检索行数。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

此查询应该完成工作。只需用表格的实际名称替换Table_name

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