2015-05-08 47 views
0

我看到一个表的数据值为18-May-2012。但是,当我查询使用下面的查询寻找相同的日期,没有结果可用。当使用日期查询时,SQL查询不会显示结果

Select Submit_Dt From Siebel.S_Order_Dtl 
where submit_dt = '18-May-2012' 

你能帮我解决这个问题吗?

+0

确保它不是日期列... –

+1

1 NLS(http://docs.oracle.com/cd/A84870_01/doc /server.816/a76966/ch1.htm)格式可能不同。 2它可能有一个时间组件,所以试试'where trunc(Submit_dT)= '18-May-2012'trunc将时间组件放在submit_Date上。然后引擎会隐式地将字符串转换为日期,从而比较类似的组件。这假定submit_DT是一个日期/时间,而显示可能只会显示一个日期;但存储时间。如果是这种情况,上面的trunc应该可以工作。如果NLS格式是Oracle Default – xQbert

回答

1

您需要将字符串日期转换成日期TO_DATE()函数。 此外,您还需要考虑到您的日期可能包含小时/分钟/秒。为了处理这个,你需要截断submit_dt列。

在你的情况是这样的:

Select Submit_Dt From Siebel.S_Order_Dtl 
where TRUNC(submit_dt) = TO_DATE('18-May-2012','dd-MON-yyyy') 
+0

@Rafaz谢谢你,系统会隐式地将你输入的字符串日期转换为日期。这工作。 :) – RDPD

1

尝试使用to_date日期为日期格式转换如下

Select Submit_Dt From Siebel.S_Order_Dtl 
where submit_dt = to_date('18-May-2012','DD-MON-YYYY') 
+0

或ANSI语法'DATE'2012-05-18'' –