select * from SModel_master where RegDate>='2003-01-01' 总是显示所有的数据?换成; select * from SModel_master where convert(varchar(10),RegDate,121)='2002-02-02' 少了''
为提高检索效率,应将比较数值做转换(搜索一下关于SQL优化的帖子),如: select * from Northwind..Orders where OrderDate<cast('2002-02-02' as datetime)
select * from SModel_master where RegDate>=2003-01-01 ===> select * from SModel_master where RegDate>=2001 --2003-01-01=2001 --不加引号进行数学运算所以会显示2001年以后的所有数据。
不好意思,还是理解错了! select CAST(CAST('2003-10-01 00:00:00.000' AS DATETIME)AS INT) ---结果:
总是显示所有的数据?换成;
select * from SModel_master where convert(varchar(10),RegDate,121)='2002-02-02'
少了''
select * from Northwind..Orders where OrderDate<cast('2002-02-02' as datetime)
===>
select * from SModel_master where RegDate>=2001
--2003-01-01=2001
--不加引号进行数学运算所以会显示2001年以后的所有数据。
select CAST(CAST('2003-10-01 00:00:00.000' AS DATETIME)AS INT)
---结果:
-----------
37893(1 row(s) affected)
----不知这结果是怎么来的!
select CAST(CAST('1901-01-01 00:00:00.000' AS DATETIME)AS INT)
--它是计算从'1900-01-01'日期开始到'1901-01-01'的总天数!
select * from SModel_master where RegDate>='2003-01-01'