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 orders
where 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 where  month(Adate)=9 and year(Adate)=2009

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值