select min(a.blog_id) from blogs a where a.dayinfo = (select left(convert(varchar(12),dayinfo,126),10) as dd from blogs)

解决方案 »

  1.   

    你的数据库是什么?Oracle吗?
    你直接用a.dayinfo = ?这个作为参数传进来才是更好的主意!
      

  2.   

    sql server 啊。嵌套是不是不方便啊?sql server可以用问号的形式传参数吗?
      

  3.   

    select min(a.blog_id) from blogs a where a.dayinfo = (select left(convert(varchar(12),dayinfo,126),10) as dd from blogs)
    这个样子不可以啊我是想把子句查询出来的结果等于 '2008-04-09'然后求子句的查询结果等于 '2008-04-09'的id
    select min(a.blog_id) from blogs a where select left(convert(varchar(12),dayinfo,126),10) as dd from blogs= '2008-04-09'
    基本意思是上面那样的
      

  4.   


    这样不知是不是lz想要的?
    select min(a.blog_id) from blogs a where a.dayinfo in (select left(convert(varchar(12),dayinfo,126),10) as dd from blogs)如果还是不是就不太理解你的意思了
      

  5.   


    select min(a.blog_id) from blogs a where a.dayinfo in (select left(convert(varchar(12),dayinfo,126),10) as dd from blogs where dayinfo='2008-04-09')
    这个意思?
      

  6.   

    哈谢谢。。是第二个这个意思
    但是这样的话精确度却很难把握比如我查询where dayinfo='2008-04-09'的时候这个时间: 2008-04-09 00:00:00.000的可以查到,但是2008-04-09 01:01:00.000,这个就查不到了。因为他默认'2008-04-09'转化成datetime以后就2008-04-09 00:00:00.000,我现在是想只关心日期,不管时间只要是2008-04-09 的就可以查出来这个好做吗?
    我前面的这个字句就是想用来限制日志格式的
    select left(convert(varchar(12),dayinfo,126),10) as dd from blogs 
    。我的意思你明白了吗?
      

  7.   

    select min(a.blog_id) from blogs a where a.dayinfo in (select left(convert(varchar(12),dayinfo,126),10) as dd from blogs where  dayinfo>='2008-04-09' and dayinfo<dateadd(day,1,'2008-04-09')))
    这个意思?
      

  8.   


    转换的sql改成这样试试
    select convert(char(10),dayinfo,120)