简洁的实现数据库中年月区间查询
2007-10-30 18:04
155 查看
简洁的实现数据库中年月区间查询
做项目的时候经常会出现这样的问题 XX年XX月 -- XX年XX月.而且在数据库中是分开存储年和月这两个字段的,在组装SQL语句的时候是极其痛苦的(先判断年的大小,然后再判断月份的大小,年份相等了如何,不相等了又如何).而且也特别爱出错.我也因此而痛苦过几天.最后想出了一个比较简洁的解决办法.
要想非常简洁的解决这个问题,无非是把这两个字段放到一起组合成日期,然后利用数据库提供的日期大小比较来实现我们的目的.看到这里您可能明白了.那么究竟如何来将年和月组装在一起呢.SQL Server提供了cast函数(想了解的详细一点可以查看sql的帮助,在这里就不赘述了.cast转换日期必须是XXXX-XX-XX或者是XX-XX-XX当然还可以带上小时分秒毫秒,要带就带全了否则就别带,要不会出错的.
假如数据库中对应的两个字段是Year(int),Month(int).那么我们可以这样来写查询语句(StartDate和EndDate是我们在C#代码中就将年和月组合在一起转换成DateTime类型了.注意between前面的'-1')),这是为了进行类型转换成功而添加的一个冗余值,不会对实际的结果产生任何影响,而且如果去掉它会差生语法错误的,并且年月日之间只能用半角的 - (横杠)来连接.这样虽然不能提高效率,但是却能极大的精简我们的代码,并且减少错误发生的几率.希望能给朋友们一些启发和帮助
select *
from temp
where
cast(cast(Year as nvarchar(10)) + '-' + cast(Month as nvarchar(10)) + '-1') as smallDatetime)
between StartDate and EndDate
相关文章推荐
- ajaxpro实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
- 简单实现QT4数据库分页查询
- mongodb 实现关系型数据库中查询某一列 的效果
- 数据库表查询的内连接、外连接、交叉连接实现方式
- 用PHP去实现数据库查询结果缓存
- 使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例
- mongodb 实现关系型数据库中查询某一列 的效果
- Hibernate 注册登录,对数据库实现增删改查,及根据用户名来查询数据库
- 数据库任意组合查询的实现
- Android实现查询数据库,把数据库内容显示到屏幕
- kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询
- POJ 3468 线段树区间修改查询(Java,c++实现)
- 基于bbossgroups持久层框架实现数据库分页查询
- 转载:数据库查询过程是怎么实现的?
- 用纯JSP实现按条件查询数据库
- MySQL集群:主从数据库配置 实现查询负载
- asp实现的查询某关键词在MSSQL数据库位置的代码
- 代码实现数据库的创建和查询(随便写点,只为记录自己的成长过程)
- 使用c#实现简单的数据库添加和查询
- 一种利用ajax js与php实现数据库动态查询的方法