首先orders表的begintime字段为datetime类型,且有条记录的begintime是2006-12-10 20:38:05 
用SQL语句:
select * from orders where begintime= Cast('2006-12-10 20:38:05' as datetime )
这句查值为0记录select * from orders where begintime=convert('2006-12-10 20:38:05','YYYY-MM-DD HH:MI:SS') 
这句提示错误:'2006-12-10 20:38:05' 附近有语法错误谢谢解答!

解决方案 »

  1.   

    select * from orders where begintime='2006-12-10 20:38:05'
      

  2.   


    create table orders (id smallint identity(1,1),begintime datetime)insert into orders select convert(datetime,'2006-12-10 20:38:05',120)select * from orders
    /*结果
    2006-12-10 20:38:05.000
    */select * from orders where begintime=convert(datetime,'2006-12-10 20:38:05',120)
    /*结果
    1  2006-12-10 20:38:05.000
    */
      

  3.   

    已经是datetime 类型了那就没必要再转换了..
      

  4.   

    select * from orders where begintime=convert( datetime,'2006-12-10 20:38:05','YYYY-MM-DD HH:MI:SS') 
    convert(类型,变量,格式)
    格式用 120代表yyyy-mm-dd
    还有好几个 103 ..类型可以有程度的限制,这样可以转化为日期时间或则是日期
    varchar(9)
      

  5.   

    谢谢刚才回答问题的几位朋友,问题没有解决,但我有一些发现:因为我数据库里面的数据是程序插入的,插入后的数据,用select * from orders显示的数据均是这样的时间2006-12-09 20:51:19.517,就是说后面都带有毫秒吧,当我手动插入数据的时候select显示其记录,其记录时间的毫秒为000,用
    select * from orders where begintime=convert(datetime,'2006-12-10 20:38:05',120)
    可找到插入的数据,而毫秒不为整000的数据用上面这样的SQL语句查询均无法显示。楼上的朋友说120代表yyyy-mm-dd,如果像是我这样带毫秒的数据应该怎么查?还有,如果用
    select * from orders where begintime=convert( datetime,'2006-12-10 20:38:05','YYYY-MM-DD HH:MI:SS')这样的SQL语句,sql server提示错误:函数 convert 的参数 3 的数据类型 varchar 无效。
      

  6.   

    select * from orders where begintime = '2006-12-10 20:38:05'orselect * from orders where convert(varchar(19),begintime,120) = '2006-12-10 20:38:05'
      

  7.   

    看看你在建表时是不是建立了什么约束,当你插入时应该用with noncheck
      

  8.   

    select * from orders where convert(varchar(19),begintime,120)='2006-10-09 20:00:00'