jhlovett 发表于 2013-2-5 01:26:33

MSSQL按照日期来搜索记录的问题(按日期模糊查询)

假设文本框日历控件选择的是2008-09-01日,从c#到数据库格式会转换成:2008-09-01 00:00:00:000,该查询是查不到当天所有数据的,而且用一方的like方式也是没有办法查到的用=更不可能了,如:
where riqi like '%2008-09%'   --或者: where riqi ='2008-09-01'  
   必须得先把riqi列转化成字符串后方可查询,下面是按日期查询的例子:
select * from orderswhere replace(CONVERT(char(10),riqi,111),'/','-') like '2008-09%'--查询9月的所有数据 其中“111”参数是把日期转成形如“2008/09/12” 的样子,所以得用replace函数把/转成-
 
因为把时间类型转换成字符串会变成这样的格式如:08 27 2009  9:14AM,所以我们需将它转换成:“2008/09/12”
然后再替换成'-'
 
你可以用select Convert(varchar(20),addDate,111) from orders 查看转换过来的效果.
 
假设要查询2009-08-27当天的所有数据: select addDate from dbo.Tab_TouristTrack where replace(Convert(varchar(20),addDate,111),'/','-') like '2009-08-27%'
 
 
方法二
在c# 中得到年月日
DateTime dt =DateTime.Parse("2009-9-14");      //dt.Year;      //dt.Month;      //dt.Second;//向数据库传入年月日//该方式在查询带个日期的时候挺有效. 
select * from dbo.Tab_Article where day(Adate)=14 and month(Adate)=9 and year(Adate)=2009 
 假设查询9月的所有数据也是一样的:
select * from dbo.Tab_Article wheremonth(Adate)=9 and year(Adate)=2009 
 
页: [1]
查看完整版本: MSSQL按照日期来搜索记录的问题(按日期模糊查询)