SELECT    * FROM  mytable
WHERE     (mydate = '2011-2-11 11:23:00')
数据库中有该记录却读取不到,用<可以找到比该记录早的记录插入的时候用DateTime now=DataTime.Now插入,然后在使用
SELECT    * FROM  mytable
WHERE     (mydate = '"+now+"')就找不到,怎么处理应该?

解决方案 »

  1.   


    --因为精确到秒或者毫秒了。你可以:
    SELECT * FROM mytable
    WHERE convert(varchar(19),mydate,120) = '2011-02-11 11:23:00'
      

  2.   

    楼主应该是按照年月日来查询,不算时分秒吧?
    select * from mytable where convert(varchar(10),mydate,120)=convert(varchar(10),getdate(),120) 
      

  3.   


    declare @date datetime
    set @date = '2011-2-11 11:23:00'SELECT * FROM mytable
    WHERE convert(varchar(20),mydate,112)=convert(varchar(20),@date,112) and convert(varchar(20),mydate,108)=convert(varchar(20),@date,108)
      

  4.   

    这是由于在插入时的 Now 与查询时的 Now 是不一样的,Now 在你的语言里是当前时刻,用了一次Now,再用第二次的时候它和前一个Now已经不同,当然查不到了.
      

  5.   

    SELECT * FROM mytable
    WHERE (mydate = '2011-2-11 11:23:00')
    数据库中有该记录却读取不到,用<可以找到比该记录早的记录
    这有可能??
      

  6.   

    只有这个可能.
    先插入,后查询,插入时的Now,当然比查询时的Now早啊!
      

  7.   

    感觉datetime 用= 进行比较没多大意义
      

  8.   

    将日期的比较精确到日,应该可以的
    WHERE DATEDIFF(DAY,COL_DATA,'2011-1-1')=0
      

  9.   


    select mydate,datediff(ms,mydate,getdate()),getdate()
    from mytable你可以用上面的语句查出表中 mydate和当前时间的毫秒差
      

  10.   

    你的这个now是变化的。插入的时候,now是'2011-2-11 11:23:00'
    你5分钟后查询时候,now是'2011-2-11 11:28:00'这两个时间明显不相等的。另外datetime是可以用=比较的
    if (cast('2011-1-11 11:11:11.000' as datetime) = cast('2011-1-11 11:11:11' as datetime))
    begin 
    print 1
    end
      

  11.   

    declare @startDateTime datetime =convert(varchar(20), GETDATE(),120)
    declare @endDateTime datetime =dateadd(SECOND,1,@startDateTime)
    select @startDateTime,@endDateTime
    select * from mytable where  mydate>=@startDateTime and mydate<@endDateTime可以有效的利用到索引