Create Table #test(D1 varchar(50),D2 varchar(50))
Insert Into #test(D1,D2) Values('2006-12-1 00:00:00','2006-12-3 00:00:00')
Insert Into #test(D1,D2) Values('2006-12-3 00:00:00','2006-12-5 00:00:00')
Insert Into #test(D1,D2) Values('2006-12-5 00:00:00','2006-12-7 00:00:00')
Insert Into #test(D1,D2) Values('2006-12-13 00:00:00','2006-12-15 00:00:00')Select * from #test where (d1<='2006-12-13 16:39:00'and d2>='2006-12-13 16:39:00')Drop table #testvarchar 改成 Datetime 问题就解决。教训阿!(好像表不是我设计的)

解决方案 »

  1.   

    因为日期格式的问题,所以直接用varchar基本上是每次都会出错的
    2006-12-1 00:00:00
    2006-12-01 00:00:00
    对于Datetime来说上面两个是一样的,但对于varchar来说差别很大了,所以能用Datetime还是不要用varchar了,再者说Datetime无论从检索速度还是占用空间来说,都有很大优势
      

  2.   

    查询结果是正确的, 谁叫他是VARCHAR呢?
    如果想用VARCHAR存日期, 得保证格式固定,每个域的长度一致才行啊!
      

  3.   

    如果用VARCHAR的话,在insert的时候必须把时间格式化好才可以~~或者读取出来转成时间再做计算~~
      

  4.   

    插入字符例如 2006-12-01 格式,用 cast( , as datetaime) 转换为时间格式或者 cast( , as varchar) 将时间格式转为字符格式  否则会出现截断或者类型错误