Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从时间戳中检索日期-sql_Sql_Oracle - Fatal编程技术网

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

如何从时间戳中检索日期-sql,sql,oracle,Sql,Oracle,我想获得当前日期的所有行的计数 Column name = LOGIN_TIME (format is TIMESTAMP) 现在我有了USER\u NAME和SUBJECT值 表结构: USER_NAME SUBJECT LOGIN_TIME ----------------------------------- abc physics 01-MAY-13 12.27.50.863000000 AM abc math 02-MAY-13

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

Column name = LOGIN_TIME (format is TIMESTAMP)
现在我有了
USER\u NAME
SUBJECT

表结构:

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\u name='aaa'
subject='physics'
,以及
当前日期(请求时间)
,我想重新计算行数


请帮助我完成此查询。

此查询应该可以完成此工作。只需用表的实际名称替换
Table\u name

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

当您使用SQL Developer标记问题时,我假设您使用的是Oracle

在这种情况下,您可以使用
trunc()
函数“删除”时间戳(或
date
)列的时间部分。“移除”意味着它被设置为00:00:00。您还需要为
current\u date
sysdate
current\u timestamp
执行此操作,因为所有这些(包括
current\u date
)都带有时间

话虽如此,结果会是这样:

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

*更正:用户名='abc'和主题='physics'谢谢你的回答。但当我在oracle sql developer中运行此脚本时,我遇到了一个错误:错误从命令中的第1行开始:从表中选择Count(*),其中user_name='abc'和subject='physics',login_time(timestamp)=Date(now())错误在命令行:2列:51错误报告:sql错误:ORA-00936:缺少表达式00936。00000-“缺少表达式”*原因:*操作:您是否更改了表_名称?@user2388729:答案对Oracle无效,并且在您使用Oracle之前就发布了-您应该从一开始就说明这一点
now()
似乎表明它是为SQL Server或MySQL设计的。但是如果我没有弄错的话,
LOGIN\u TIME(timestamp)
表达式在任何数据库中都是无效的。问题是-sql这就是我想到sql server的原因。。如果用户删除了(时间戳)是的,我确实更改了表的名称,它就可以工作了。我猜是类型转换失败了。特鲁克在你面前展现了它的魅力。