public partial class _film_list : PClass
{
    public string btime = null;
    public string etime = null;
    protected void Page_Load(object sender, EventArgs e)
    {        if (!IsPostBack)
        btime = Request.QueryString["btime"].ToString();
        etime = Request.QueryString["etime"].ToString();        {
            string SqlStr = "SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) order by fm_film.id desc";
 
                 if (btime == "all" && etime == "all" )
                 {
                      NewsBind(SqlStr);
                 
                 }
                 else
                 {
                     btime = Request.QueryString["btime"].ToString();
                     etime = Request.QueryString["etime"].ToString();
                     Response.Write(btime + etime);
                     SqlStr = "SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) and (Film_endtime between '" + btime + "' and '+etime+') order by fm_film.id desc ";
                     
                    Response.Write(SqlStr);
                    NewsBind(SqlStr);
                 
                 }         
            }
 
        }
Response.Write(SqlStr);输出的语句直接用查询分析器可以执行,无错误!
而直接执行时提示异常详细信息: System.Data.SqlClient.SqlException: 从字符串转换为 datetime 时发生语法错误。

解决方案 »

  1.   

    Film_endtime between '" + btime + "' and '+etime+'
    你这样传到数据库里,btime 变成字符串了!!
      

  2.   

    "' and '+etime+') =》"' and '"+etime+"') 
      

  3.   

    单步,把你的btime etime字符串 贴上来看看是什么字符串
      

  4.   

    btime  没问题,问题是 etime
      

  5.   

    NewsBind(sqlstr)  这里面怎么执行的
      

  6.   

    SqlStr = "SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) and (Film_endtime between '" + btime + "' and '"+etime+"') order by fm_film.id desc ";
    输出为:
    SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) and (Film_endtime between '2010-03-15' and '2010-03-16') order by fm_film.id desc "
      

  7.   

    SqlStr = "SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) and (Film_endtime between '" + btime + "' and '+etime+') order by fm_film.id desc ";=》
    SqlStr = "SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) and (Film_endtime between '{0}' and '{1}') order by fm_film.id desc ";SqlStr =string.Format(SqlStr,btime,etime);
      

  8.   

    SELECT fm_film.id, Film_startime, Film_endtime,Location_atiude,Location_longitude,fm_film.device_number,device_region,device_host,IsVerify FROM fm_device RIGHT OUTER JOIN fm_film ON fm_device.device_number =fm_film.device_number where (IsVerify=0) and (Film_endtime between '2010-03-15' and '2010-03-16') order by fm_film.id desc这个是输出 ?
      

  9.   

    (Film_endtime between '" + btime + "' and '+etime+')
    改成:
    (Film_endtime between CONVERT(vchar(20)'" + btime + "',120) and CONVERT(vchar(20)'" + etime + "',120))
      

  10.   

    NewsBind(SqlStr);
    是怎么样的???