ORACLE查询有关datetime的帮助

时间:2014-05-01 12:47:18

标签: sql oracle datetime

您好我的查询有问题我想按两个日期时间条件获取值:

 select * 
from cns_concerto_projects 
where SST_CREATION_DATE> TO_DATE('02/27/2010 16:07:07', 'mm/dd/yyyy HH24:MM:SS') 
AND SST_MODIFIED_DATE > TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy  HH24:MM:SS') < sysdate
你可以帮忙纠正这个问题。

非常感谢。

3 个答案:

答案 0 :(得分:1)

问题是where中的最后一行。

如果要搜索范围,则需要使用between

所以不要这样:

SST_MODIFIED_DATE > TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy HH24:MM:SS') < sysdate

使用此:

select *
from   cns_concerto_projects
where  SST_CREATION_DATE > TO_DATE('02/27/2010 16:07:07', 'mm/dd/yyyy HH24:MI:SS')
AND    SST_MODIFIED_DATE between TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy HH24:MI:SS') and sysdate

此外,您必须使用mi分钟,而不是mm

如果您要删除between,请使用此<:p>

select *
from   cns_concerto_projects
where  SST_CREATION_DATE >  TO_DATE('02/27/2010 16:07:07', 'mm/dd/yyyy HH24:MI:SS')
AND    SST_MODIFIED_DATE >= TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy HH24:MI:SS')
AND    SST_MODIFIED_DATE <=  sysdate

答案 1 :(得分:0)

如果保证SST_MODIFIED_DATE总是大于SST_CREATION_DATE,那么您可以跳过第一个条件,如下所示:

select * 
from cns_concerto_projects 
where SST_MODIFIED_DATE BETWEEN TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy HH24:MI:SS') AND sysdate;

这是不使用BETWEEN的版本:

select * 
from cns_concerto_projects 
where SST_MODIFIED_DATE >= TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy HH24:MI:SS') 
AND SST_MODIFIED_DATE <= sysdate;

答案 2 :(得分:0)

您可以通过以下方式使用它:

select * from cns_concerto_projects 
where SST_CREATION_DATE > TO_DATE('02/27/2010 16:07:07', 'mm/dd/yyyy HH24:MM:SS') 
AND 
(SST_MODIFIED_DATE > TO_DATE('03/26/2010 11:42:07', 'mm/dd/yyyy HH24:MM:SS') And SST_MODIFIED_DATE < sysdate)