菜菜在这里来问:关于时间的模糊检索

gootey 2010-05-21 12:46:09
主要是针对时间类型的数据,数据库里面我的时间是这样的2010/5/19 0:00:0,datatime类型。

在aspx页面上拉一个textbox控件和一个button控件,textbox控件输入要检索的内容。

假如我要按月份检索,SQL语句该怎么写?

例如我要2月份的资料,可以这样写:select * from table1 where 时间 like '%02%'

但是如果我要1月份的资料,有可能会输入1、01、201001等等
这样写却不行:select * from table1 where 时间 like '%01%'

这样会把2010年的全部检索出来,不符合要求,应该怎么样写呢?

当然,如果我要按日来检索资料,也会产生类似的情况,应该怎么办呢?

大侠们都是怎么样实现时间检索的?或者数据库里是怎么保存时间数据的?

分不多了,呵呵。谢谢哥哥们。
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gootey 2010-05-21
  • 打赏
  • 举报
回复
呵呵。的确啊。DD
small_snowflower 2010-05-21
  • 打赏
  • 举报
回复
1。一楼二楼完全正确。
2。前五楼的睡的好晚。
无语中V5 2010-05-21
  • 打赏
  • 举报
回复
还是用时间函数好些,比较方便
csmark 2010-05-21
  • 打赏
  • 举报
回复
也可以用变量赋值来做
Barton 2010-05-21
  • 打赏
  • 举报
回复
我觉得可以查询条件可以把年月日分开
例如:

select count(*) from LinkedComp where year(TransDateTime)=2010 and MONTH(TransDateTime)=05

-----------
371016

(1 row(s) affected)




gootey 2010-05-21
  • 打赏
  • 举报
回复
嗯,好的,非常感谢你们,我明天再试试,现在已经困得不行了,你们也早点睡吧,身体重要。GN!
dawugui 2010-05-21
  • 打赏
  • 举报
回复
同意楼上两位的说法.
htl258_Tony 2010-05-21
  • 打赏
  • 举报
回复
匹配时间字段,一般不用LIKE关键字,通常用一些日期函数来处理:
具体方式一楼已经说的比较清楚了
FlySQL 2010-05-21
  • 打赏
  • 举报
回复
select * from table1 where month(时间)=1
永生天地 2010-05-21
  • 打赏
  • 举报
回复
但是如果我要1月份的资料,有可能会输入1、01、201001等等
这样写却不行:select * from table1 where 时间 like '%01%'

这样的输入有问题。

时间的查询一般不用like。而是用函数
1、datepart,得到时间的某个部分:如 datepart(mm,dt) --得到月
2、convert常用,比如convert(varchar(10),getdate(),120) 可得出 '2010-05-21'
convert(varchar(6),getdate(),112) 可得出 '201005'

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧