程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> 數據清洗小記:“時間段”數據獲取小心錯誤的習慣

數據清洗小記:“時間段”數據獲取小心錯誤的習慣

編輯:SyBase教程

數據清洗小記:“時間段”數據獲取小心錯誤的習慣


【背景】

某項目中,有查詢時間段的業務需求,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”的方式才是正確的,對於時間段統計的常規性用法不應想當然的用兩個等於號劃分上下限,而是應該用正確的區間進行查詢。

 

小知識,簡而記之。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved