sql="select save_time from newuStandard2012.dbo.newu_tran_report where save_time>=convert(varchar(100),'"+beginDate+"',25)";
我用的是sqlserver2008数据库,beginDate是一个表示日期的变量,哪位师哥师姐帮我看下这个语句问题在哪儿,从客户端输入的日期格式为yyyy-MM-dd HH:mm:ss这个将传给beginDate,save_time的日期格式为yyyy-mm-dd hh:mm:ss.mmm,现在就是讲beginDate带过来的日期格式转换为和save_time的日期格式有问题,报的错是“ 从字符串转换日期和/或时间时,转换失败”。
CONVERT() 函数是把日期转换为新数据类型的通用函数,你的save_time在数据库保存的是time类型的吗?time>=string?
save_time是datetime类型
@醉翁之意: 所以你这一定会报错的,time<=>string了
那该怎么写呢??麻烦您留一下qq号,好吗?谢谢了
@稳稳的河: 直接用参数的方式传,还可以防止注入
@稳稳的河: 刚参加工作,sqlserver初学,真的不知道该怎么写了,这个问题都纠结好几天了,您有解决的办法吗???
@醉翁之意: sqlsqerver里面有个sql server profiler工具,你去看下你传的SQL语句是什么,你就知道你为什么转不过去了,我是香港的IP,公司不运行远程
@稳稳的河:
恩,谢谢啦,select save_time from newuStandard2012.dbo.newu_tran_report where save_time>=convert(varchar(100),'"+beginDate+"',25)
这就是监听的结果,他也没有提示什么错~
您能收邮件吗??
@稳稳的河:
beginDate就是从前台传过来的一个参数
1、report.jsp
开始时间:<input class="Wdate" type="text" id="pageBeginTime"
style="width: 150px;"
onFocus="WdatePicker({isShowClear:true,readOnly:true,dateFmt:'yyyy-MM-dd HH:mm:ss'})" /><br>
2、FindNewu_tran_reportServlet.java
String beginDate=request.getParameter("pageBeginTime");
3、Newu_tran_reportDaoImpl .java
public List<Newu_tran_report> find(String beginDate){
sql="...................";
}
就是这样一层一层调用的传过来的
@醉翁之意: 邮箱James.He@r-pac.com.cn,你就把运行的时候生成的SQL发给我看下把
@稳稳的河: 恩,谢谢你啦,即使不认识,也这么用心回答我。
@稳稳的河: 谢谢了,那个问题我解决了,不过还是要谢谢你,
@醉翁之意:哦, 知道为什么转化不了就OK了
@稳稳的河: 直接写成select save_time newuStandard2012.dbo.newu_tran_report where convert(vachar(15),save_time,20)>='"+beginDate+"'
@醉翁之意: 你这样就全部变成char的了
@稳稳的河: 其实你不用convert,直接save_time>="'"+beginDate+"'"应该也可以
@稳稳的河: 我的beginDate日期格式和save_time的不一样,需要转一下才能
@醉翁之意: 格式不一样好像不可以数据库好像也可以自动的比较大小,没必要在乎后面的mmm,不过你这样好点