简洁的实现数据库中年月区间查询

简洁的实现数据库中年月区间查询 

        做项目的时候经常会出现这样的问题 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')),这是为了进行类型转换成功而添加的一个冗余值,不会对实际的结果产生任何影响,而且如果去掉它会差生语法错误的,并且年月日之间只能用半角的  - (横杠)来连接.这样虽然不能提高效率,但是却能极大的精简我们的代码,并且减少错误发生的几率.希望能给朋友们一些启发和帮助
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值