select CONVERT(varchar(10),dtmreceive,120) from receive
看看你有当天的记录吗???????????

解决方案 »

  1.   

    WHERE convert(varchar(10),dtmreceive,120) = convert(varchar(10),getdate(),120)表中有今天的记录吗?
      

  2.   

    下表是SQL SERVER ONLINE HELP中关于CONVERT的解释。关键是 格式有问题。
    从下表看120代表 yyyy-mm-dd hh:mi:ss(24h) 
    ,两个时间要在秒上相等,恐怕不容易,如果用112,应该没有问题.
    -------------------------------------------------------------------Without 
    century 
    (yy) With 
    century 
    (yyyy) Standard Input/Output** 
    - 0 or 100 (*)  Default mon dd yyyy hh:miAM (or PM) 
    1 101 USA mm/dd/yy 
    2 102 ANSI yy.mm.dd 
    3 103 British/French dd/mm/yy 
    4 104 German dd.mm.yy 
    5 105 Italian dd-mm-yy 
    6 106 - dd mon yy 
    7 107 - mon dd, yy 
    8 108 - hh:mm:ss 
    - 9 or 109 (*)  Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM) 
    10 110 USA mm-dd-yy 
    11 111 JAPAN yy/mm/dd 
    12 112 ISO yymmdd 
    - 13 or 113 (*)  Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h) 
    14 114 - hh:mi:ss:mmm(24h) 
    - 20 or 120 (*)  ODBC canonical yyyy-mm-dd hh:mi:ss(24h) 
    - 21 or 121 (*)  ODBC canonical (with milliseconds) yyyy-mm-dd hh:mi:ss.mmm(24h 
      

  3.   

    为什么不用……WHERE (datediff(dd,dtmreceive,getdate()) = 0)
      

  4.   

    使用 WHERE (datediff(dd,dtmreceive,getdate()) = 0)不能保证查到当天的记录,理论上它应该是查到距离当前系统时间前后12个小时以内的记录。
      

  5.   

    这个也许很有用(没试)!create function YMD (@dt datetime) returns datetime as
    begin
      return convert(char(8),@dt,112)
    end
      

  6.   

    其实也用不着这么麻烦,只要不要只把日期僵化地看成那种中间带横线的格式就行了。declare @dt datetime,@st datetime
    set @dt='2003-2-3'
    set @st='20030203'
    if @dt=@st print '就是这样简单' else print '不可能吧!'