频道栏目
首页 > 资讯 > Sybase > 正文

数据清洗小记:“时间段”数据获取小心错误的习惯

15-06-11        来源:[db:作者]  
收藏   我要投稿

【背景】

某项目中,有查询时间段的业务需求,java代码类似如下:


and BANKJLSJ_BANKJLSJSSJto_date( #{endDate},’yyyy-mm-dd’)


and BANKJLSJ_BANKJLSJSSJ=]]> to_date(#{startDate},’yyyy-mm-dd’)

项目建设中,开发人员发现查询时间段有漏数据的现象,当日期精确到年月日时数据是可以查看到的,但是如果时间是精确到时分秒类型的便会有数据被漏掉。

 

【解决】

这是学习开发人员的经验,将以上代码改变为如下:


and BANKJLSJ_BANKJLSJSSJto_date( #{endDate},’yyyy-mm-dd’)+1


and BANKJLSJ_BANKJLSJSSJ=]]> to_date(#{startDate},’yyyy-mm-dd’)

这样不仅能查询到如“2014-09-02”这样的数据,也可以查询到“2014-09-02 12:23:08”这样的数据。

【实验】

构造一个实验环境。

createtabletest
(
IDvarchar2(32) default sys_guid(),
BANKJLSJ_BANKJLSJSSJ date
);

插入两条实验数据。

insertintotest (BANKJLSJ_BANKJLSJSSJ) values(to_date(20150516,'yyyy-mm-dd'));
insertintotest (BANKJLSJ_BANKJLSJSSJ) values(to_date(20150516120214,'yyyy-mm-dd hh24:mi:ss'));
commit;

测试查询结果,步骤如下

先查询test表里的数据情况,如下:

情况一:使用上面最初的>=和<=的条件,查询20150516一天时间段的数据,返回一条数据结果,如下:

稍加修改,再来查询一下,20150516一天时间段内的数据,查询如下:

可以看到,第二次的查询结果才是正确的,而使用范围时学会使用“+1”的方式才是正确的,对于时间段统计的常规性用法不应想当然的用两个等于号划分上下限,而是应该用正确的区间进行查询。

 

小知识,简而记之。

相关TAG标签
上一篇:Linux日志清除
下一篇:linux给普通用户增加sudo权限
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站