用Oracle日期函式解決查詢難題

2021-08-30 09:25:27 字數 776 閱讀 2036

筆者負責開發的查詢模組中需要乙個全域性函式,該函式能查詢某年、某月、某職工在某個城市的工作總天數,查詢僅涉及乙個表ryqxb,該錶記錄了人員去向,表結構如下:pepoleid:職工編碼,city:所工作的城市,qssj:工作起始時間,zzsj:工作終止時間。查詢方案似乎很簡單:

然後,利用sum函式,對符合查詢條件的每次按次工作總天數求和,得出當月工作天數。

1、某職工在某城市工作起始日期和終止日期屬於同一年同一月,且在要查詢的年月範圍內,計算可直接採用前面的查詢方案。比如:某職工從2023年7月5日至2023年7月15日,在某城市工作,則7月份的總工作天數為:7月15日減7月5日加1,總共11天。

仔細分析該圖,不難發現規律:計算總天數所依據的起始日期為表中記錄的起始日期和查詢年月第一天之間的最大者,計算總天數所依據的終止日期為表中記錄的終止日期和查詢年月最後一天之間的最小者。

1、last_day(d):返回包含了日期引數的月份的最後一天的日期

3、least(d1,k2…dn)給出的日期列表中最早的日期

//函式名:gf_getmonthdays

//函式引數:as_year年,as_month月,as_id職工id,as_city城市名

string ls_firstdate

long ll_days

ls_yearmonth=as_year+'-'+trim(as_month)

into :ll_days fromryqxb t

and(to_char(t.zzsj,'yyyy-mm')>=:ls_yearmonth

用Oracle日期函式解決查詢難題

最近,筆者參與開發了乙個資訊管理系統,系統以oracle為資料庫後台,p owerbuilder 8為開發工具。筆者負責開發的查詢模組中需要乙個全域性函式,該函式能查詢某年 某月 某職工在某個城市的工作總天數,查詢僅涉及乙個表ryqxb,該錶記錄了人員去向,表結構如下 pepoleid 職工編碼,c...

oracle 日期查詢

1.string hql select substr to char create time,yyyy mm dd hh24 mm ss 1,10 count createtime from sitebean where to char createtime,yyyy mm dd to char t...

Oracle 日期查詢

例如 select from c where cdate to date 2010 10 14 14 00 00 yyyy mm dd hh24 mi ss select from mytable where to char install date,yyyymmdd 20050101 select...