国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

關(guān)于Oracle日期轉(zhuǎn)換的一點(diǎn)小經(jīng)驗(yàn):運(yùn)用union的一種奇怪現(xiàn)象及解決

2024-08-29 13:47:47
字體:
供稿:網(wǎng)友

   Oracle9i安裝默認(rèn)的日期格式是‘DD-MM-RR’,這個(gè)可以通過
    select * from sys.nls_database_parameters;
進(jìn)行查看。

因此對于輸入?yún)?shù)為DATE類型的存儲過程就出現(xiàn)問題了,其中查詢基本表(tranficstat
)里記錄日期格式為‘yyyy-mm-dd’。原碼如下:

--比較某兩個(gè)車站相同時(shí)間段的運(yùn)力情況

create or replace PRocedure HY_CONTRAST_PERIOD(
   depotcode1 in varchar2,
   depotcode2 in varchar2,
   startdate1 in date,
   enddate1 in date,
   cur_return out CUR_DEFINE.GB_CUR) is --CUR_DEFINE.GB_CUR 是自定義的游標(biāo)類型
begin
  case
  when (depotcode1 is null) or (depotcode2) is null then 
  return;
  else
  open cur_return for
    select              
          sum(NORMAL_SCHEMES) as 正班班次,
          sum(OVERTIME_SCHEMES) as 加班班次,
          sum(NORMAL_SEATS) as 正班座位數(shù),
          sum(OVERTIME_SEATS) as 加班座位數(shù) 
          from tranficstat
     where senddate >= startdate1 
              and senddate < enddate1+ 1
      and depot = depotcode1
    group by depot
   
    union
   
    select
          sum(NORMAL_SCHEMES) as 正班班次,
          sum(OVERTIME_SCHEMES) as 加班班次,
          sum(NORMAL_SEATS) as 正班座位數(shù),
          sum(OVERTIME_SEATS) as 加班座位數(shù)
          from tranficstat
     where senddate >= startdate1 
              and senddate < enddate1 + 1
      and depot = depotcode2
    group by depot;
    end case;  
end HY_CONTRAST_PERIOD;

通過union,你期望返回兩條記錄,卻發(fā)現(xiàn)永遠(yuǎn)總是只返回一條記錄。問題癥結(jié)發(fā)生在日期格式轉(zhuǎn)換上,參數(shù)傳進(jìn)的格式為‘dd-mm-rr’,而條件左側(cè)的記載格式為‘yyyy-mm-dd’,只要把所有右側(cè)條件更改成如
  where senddate >= to_date(to_char(startdate1,'yyyy-mm-dd'),'yyyy-mm-dd')
           and senddate < to_date(to_char(enddate1,'yyyy-mm-dd'),'yyyy-mm-dd') + 1;
即可消除癥狀。


當(dāng)然也可以修改左側(cè)的格式,總之使兩邊的日期格式匹配;另外當(dāng)然也可以直接修改系統(tǒng)的NLS_DATE_FORMAT 。
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桂阳县| 汨罗市| 深水埗区| 讷河市| 淮北市| 射阳县| 天镇县| 台州市| 城口县| 杂多县| 新竹市| 朔州市| 黑龙江省| 宜兴市| 阿巴嘎旗| 巩留县| 垫江县| 天津市| 雅江县| 榆树市| 遂昌县| 陈巴尔虎旗| 新津县| 若羌县| 襄垣县| 长垣县| 临澧县| 遂川县| 运城市| 渭源县| 长寿区| 齐河县| 蓬莱市| 阳原县| 屯留县| 正镶白旗| 江陵县| 淳安县| 呼伦贝尔市| 崇义县| 内黄县|