IBatisNet 关于日期的查询技巧

      IBatisNet 遇到 DateTime 类型,显的不是那么灵活,测试软件过程中总出现日期方面的查询不准确的情况,总结一下日期方面的一下技巧。

  •   如果你想知道你的SQL的真实执行情况,请用事件探查器,不过这里有个技巧就是你的映射文件的写法应该如下:
    ContractedBlock.gif ExpandedBlockStart.gif Code
      < isNotEmpty prepend = " And "  property = " StartTime " >
              
    <! [CDATA[
              p.BeginTime  
    >=   ' $StartTime$ '
              ]]
    >
            
    </ isNotEmpty >
            
    < isNotEmpty prepend = " And "  property = " EndTime " >
              
    <! [CDATA[
              p.EndTime
    <=   ' $EndTime$ '
              ]]
    >
     
    </ isNotEmpty >
  • 如果不小心写出了下面的这个方式:#StartTime#,查询结果则如下:
    ContractedBlock.gif ExpandedBlockStart.gif Code
    exec sp_executesql N'SELECT [PlanId], [LineId], [PlanTime], 
    [Deviation],  [BeginTime], [EndTime], [During], [PlanDesc] 
    FROM [Plan] as p         
    Where    p.BeginTime >= @param0    And    p.EndTime <= @param1
    ', N'@param0 datetime,@param1 datetime'
    @param0 = '01 19 2009  3:26:20:313PM',
    @param1 = '01 20 2009  3:26:20:313PM'
    虽然不影响对结果的查看,但是比较影响心情。还是这种结果更人性化,更易接受:
    ContractedBlock.gif ExpandedBlockStart.gif Code
    SELECT [PlanId][LineId][PlanTime][Deviation],
    [BeginTime][EndTime][During][PlanDesc] FROM 
    [Plan] as p         Where  
    p.BeginTime 
    >='2009-1-19 15:11:27'  And  
    p.EndTime 
    <='2009-1-20 15:11:27'
  •  当时上面的写法有个问题,这个查询的结果可能不是想要的,改到下面形式可能会更精确:
  • ContractedBlock.gif ExpandedBlockStart.gif Code
    <isNotEmpty prepend="And" property="StartTime">
              
    <![CDATA[
              p.BeginTime  Between 
    '$StartTime$'
              ]]
    >
            
    </isNotEmpty>
            
    <isNotEmpty prepend="And" property="EndTime">
              
    <![CDATA[
             
    '$EndTime$'
              ]]
    >
            
    </isNotEmpty>
  • 不过这里有个雷,如果控件支持可空的日期,一不小心就踏上雷了

     转载请注明出处:http://www.cnblogs.com/winzheng/archive/2009/01/20/1379068.html

     下班了,明天续。

转载于:https://www.cnblogs.com/winzheng/archive/2009/01/20/1379068.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值