ResultSet rs=st.executeQuery(
"select j.vc_jo_no,
j.dt_jo_date,
p.vc_product_name
from mst_jobcard j,
mst_prod p
where j.vc_product_code=p.vc_product_code
and j.dt_jo_date=to_char("+tdate+","+"'"+dd-mm-yy+"'"+")
");
在我指定的查询中,它应该根据上述查询中传递的日期参数显示记录。 vc_jo_no,dt_jo_date取自mst_jobcard表,vc_product_name取自mst_prod表。 我加入了桌子。 请帮助我如何使用to_char函数的日期。 当我在to_char函数中指定格式即dd-mm-yy时,它会给出错误。 请帮忙..
答案 0 :(得分:4)
如果您要将日期作为字符串传递,Oracle需要将其包含在单引号中。此外,“dd-mm-yy”对我来说不合适。试试这个:
ResultSet rs=st.executeQuery(
"select j.vc_jo_no,
j.dt_jo_date,
p.vc_product_name
from mst_jobcard j,
mst_prod p
where j.vc_product_code=p.vc_product_code
and j.dt_jo_date=to_char('"+tdate+"','dd-mm-yy')
");
也就是说,这种传递参数的方法实际上并没有传递参数 - 它会导致数据库针对请求的每个不同日期解析不同的查询,这可能会导致可伸缩性问题。
更好的方法是绑定参数,使用ResultSet提供的任何方法绑定变量。您可能会发现甚至可以本地绑定日期变量,而无需将其转换为字符串。
答案 1 :(得分:1)
所以你正在运行:
executeQuery("select … where … j.dt_jo_date=to_char("+tdate+","+"'"+dd-mm-yy+"'"+")");
首先,尝试将该字符串放入变量中,输出它并查看它是否格式正确。
你试过了吗?
"… to_char("+tdate+",'dd-mm-yy'")
看来你正在用那个字符串做不必要的杂技。
最后,看看Burleson Consulting的“Oracle to_char usage”。这是Google的第一个链接。有人说谷歌是一个先看的好地方。