2013-12-09 82 views
0

我正在使用Oracle SQL Developer。动态SQL查询To_Date格式Oracle

我的导师要求我们将动态查询包含到我们的SQL语句中。我查询的

部分是这样的:

where booking.date_event != to_date('20140309','yyyymmdd') and booking.occassion_id=2 

我曾在某时修改查询一步包括动态方面。所以它现在看起来像这样:

where booking.date_event != to_date('20140309','yyyymmdd') and booking.occassion_id='&occassion_id' 

这给了我弹出框来正确输入ID,它工作正常。

但是,我现在想要为日期做同样的事情。但显然,以'yyyymmdd'格式输入日期不是非常方便用户。

如何将我的查询更改为允许各种类型的日期格式或将消息添加到弹出框以通知用户使用正确的格式?此时弹出框只显示“Date_Event”和一个输入框。

+0

你确定这是你的导师想要的吗?这听起来像你可能会混淆动态SQL与SQL Developer的内置绑定变量替换。 – Drumbeg

+0

我很可能是。谷歌搜索后,我看到动态SQL指的是别的东西。不过,我认为这只是一个简单的方法来解释她之后的事情。我想她也可能称它为“交互式查询”。 –

+0

如果问题是如何以不同的格式接受日期,那么在to_date()中使用任何你想要的。像to_date('31 -12-2014','dd-mm-yyyy')或to_date('31.12.14','dd.mm.yy'),只需阅读to_date文档即可。您可以一次尝试多次,但应该在applicetion一侧完成,而不是一般的数据库。 – Elhana

回答

0

SQL Developer是用户没有工具。所以你不必担心'20140309'格式不是用户友好的。对于真正的用户,您可以编写一个真实的应用程序来接受日期(例如日历弹出窗口),并以适当的格式将其发送到数据库。

但是为了让SQL Developer更方便一些,您可以使用to_date而不使用格式。将环境和数据库设置为相同的语言环境后,您可以简单地以您习惯的格式(例如9.3.13或09.03.2013或2013年3月9日)输入日期,并且它们都可以工作。