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]