应加引号,如:
select * from Northwind..Orders where convert(varchar(10),OrderDate,121)<'2002-02-02'

解决方案 »

  1.   

    select * from SModel_master where RegDate>='2003-01-01'
    总是显示所有的数据?换成;
    select * from SModel_master where convert(varchar(10),RegDate,121)='2002-02-02'
    少了''
      

  2.   

    为提高检索效率,应将比较数值做转换(搜索一下关于SQL优化的帖子),如:
    select * from Northwind..Orders where OrderDate<cast('2002-02-02' as datetime)
      

  3.   

    select * from SModel_master where RegDate>=2003-01-01
    ===>
    select * from SModel_master where RegDate>=2001
    --2003-01-01=2001
    --不加引号进行数学运算所以会显示2001年以后的所有数据。
      

  4.   

    不好意思,还是理解错了!
    select CAST(CAST('2003-10-01 00:00:00.000' AS DATETIME)AS INT)
    ---结果:
                
    ----------- 
    37893(1 row(s) affected)
    ----不知这结果是怎么来的!
      

  5.   

    我明白了:
    select CAST(CAST('1901-01-01 00:00:00.000' AS DATETIME)AS INT)
    --它是计算从'1900-01-01'日期开始到'1901-01-01'的总天数!
      

  6.   

    select * from SModel_master where RegDate>='2003-01-01'
      

  7.   

    select * from SModel_master where convert(varchar(10),RegDate,120)='2002-02-02'
      

  8.   

    直接在日期上加个英文下的单引号就行了!try:
    select * from SModel_master where RegDate>='2003-01-01'