可以使用to_char()、concat()等函數(shù)實(shí)現(xiàn)查詢前一小時(shí)、前一天、前一個(gè)月或者前一年的數(shù)據(jù)。
成都創(chuàng)新互聯(lián)專業(yè)提供托管服務(wù)器服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買托管服務(wù)器服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
1、查詢一小時(shí)
1)to_char(sysdate,'yyyy-mm-dd?')將系統(tǒng)當(dāng)前時(shí)間轉(zhuǎn)換為字符類型,僅取出年月日
2)|| 字符串連接符
3)to_char(sysdate,'hh24')-1取出系統(tǒng)當(dāng)前時(shí)間的小時(shí)部分,hh24小時(shí)是24進(jìn)制的
4)concat是字符串連接函數(shù)
select?concat(to_char(sysdate,'yyyy-mm-dd?')||(to_char(sysdate,'hh24')-1),':00:00')?start_time,concat(to_char(sysdate,'yyyy-mm-dd?hh24'),':00:00')?end_time?from?dual
2、查詢前一天
1)to_char(sysdate,'yyyy-mm-dd?')將系統(tǒng)當(dāng)前時(shí)間轉(zhuǎn)換為字符類型,僅取出年月日
2)|| 字符串連接符
select?to_char(sysdate-1,'yyyy-mm-dd?')||'00:00:00'?start_time,to_char(sysdate-1,'yyyy-mm-dd?')||'23:59:59'?end_time??from?dual
3、查詢前一個(gè)月
1)to_char(sysdate,'yyyy-mm-dd?')將系統(tǒng)當(dāng)前時(shí)間轉(zhuǎn)換為字符類型,僅取出年月日
2)|| 字符串連接符
3)add_months(sysdate,-1)取出系統(tǒng)當(dāng)前時(shí)間月部分,然后-1
4)concat是字符串連接函數(shù)
select?concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1),?'-MM-'),'01?00:00:00')start_time,???
concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1),?'-MM-')||to_char(LAST_DAY(sysdate),'dd?'),'23:59:59')?end_time?????from?dual
4、查詢前一年
1) extract(year from sysdate) 從系統(tǒng)日期從取出年部分
2)|| 字符串連接符
3)to_char(LAST_DAY(sysdate),'dd?')取出系統(tǒng)日期中的最后一天
4)concat是字符串連接函數(shù)
select?extract(year?from?sysdate)-1||'-01-01?00:00:00'?start_time,concat(extract(year?from?sysdate)-1||'-12-'||to_char(LAST_DAY(sysdate),'dd?'),'23:59:59')?end_time???from?dual
如果是date類型
to_char(sysdate,'hh24');
如果是varchar類型,截取即可
或者 to_date以后再to_char
獲取年
select to_char(sysdate,'yyyy') from dual--2016
select to_char(sysdate,'YYYY') from dual--2016
獲取月
select to_char(sysdate,'mm') from dual--10
select to_char(sysdate,'MM') from dual--10
獲取日
select to_char(sysdate,'dd') from dual--10
select to_char(sysdate,'DD') from dual--10
獲取時(shí)
select to_char(sysdate,'hh24') from dual--15
select to_char(sysdate,'hh') from dual--03
select to_char(sysdate,'HH') from dual--03
select to_char(sysdate,'HH24') from dual--15
獲取分鐘
select to_char(sysdate,'MI') from dual--14
select to_char(sysdate,'mi') from dual--14
獲取秒
select to_char(sysdate,'ss') from dual--35
select to_char(sysdate,'SS') from dual--40
從上面的測試SQL可以看出年月日yyyy,mm,dd,hh,mi,ss的大小寫對于從oracle中獲取年月日時(shí)分秒沒有影響?
對于獲取小時(shí)分12小時(shí)和24小時(shí)的情況,如果你想獲取顯示下午的時(shí)間,你可以采用hh24,這樣就會(huì)顯示類似于15:30而不是03:30
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)
是全球大型數(shù)據(jù)庫軟件公司??偛课挥诿绹又菁t木城的紅木岸(Redwood Shores),現(xiàn)時(shí)首席執(zhí)行官為公司創(chuàng)辦人勞倫斯·埃里森(Lawrence J. Ellison)。
2016年11月6日,甲骨文公司(Oracle)股東同意以 93 億美元的資金收購Netsuite公司,每股價(jià)格約為 109 美元。
20世紀(jì)約70年代 一間名為Ampex的軟件公司,正為中央情報(bào)局設(shè)計(jì)一套名叫Oracle的數(shù)據(jù)庫,埃里森是程序員之一。
1977年埃里森與同事Robert Miner創(chuàng)立“軟件開發(fā)實(shí)驗(yàn)室”(Software Development Labs),當(dāng)時(shí)IBM發(fā)表“關(guān)系數(shù)據(jù)庫”的論文,埃里森以此造出新數(shù)據(jù)庫,名為甲骨文。
1978年 公司遷往硅谷,更名為“關(guān)系式軟件公司”(RSI)。RSI在1979年的夏季發(fā)布了可用于DEC公司的PDP-11計(jì)算機(jī)上的商用ORACLE產(chǎn)品,這個(gè)數(shù)據(jù)庫產(chǎn)品整合了比較完整的SQL實(shí)現(xiàn),其中包括子查詢、連接及其他特性。美國中央情報(bào)局想買一套這樣的軟件來滿足他們的需求,但在咨詢了IBM公司之后發(fā)現(xiàn)IBM沒有可用的商用產(chǎn)品,他們聯(lián)系了RSI。于是RSI有了第一個(gè)客戶。
最先提出“關(guān)系數(shù)據(jù)庫”的IBM采用RSI的數(shù)據(jù)庫。1982年再更名為甲骨文(Oracle)。
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期轉(zhuǎn)化為字符串
select to_char(sysdate,'yyyy') as nowYear from dual; //獲取時(shí)間的年
select to_char(sysdate,'mm') as nowMonth from dual; //獲取時(shí)間的月
select to_char(sysdate,'dd') as nowDay from dual; //獲取時(shí)間的日
select to_char(sysdate,'hh24') as nowHour from dual; //獲取時(shí)間的時(shí)
select to_char(sysdate,'mi') as nowMinute from dual; //獲取時(shí)間的分
select to_char(sysdate,'ss') as nowSecond from dual; //獲取時(shí)間的秒
你要求的表有點(diǎn)問題
(1)護(hù)士是會(huì)換班的,如果按照這么顯示,那么一天都是一個(gè)護(hù)士,這個(gè)明顯不可能。那么護(hù)士換班后怎么顯示?
(2)手術(shù)中的體溫是全程監(jiān)倥并且記錄的,所以個(gè)人認(rèn)為在說明為手術(shù)的時(shí)候,應(yīng)該是有體溫記錄的。
(3)離院后,應(yīng)該不會(huì)再有體溫的測量記錄,還有,病人怎么請假?
如果按照本身的要求寫出來,并不是十分困難,只要就是group by+case when+max
select 病區(qū)號,姓名,護(hù)士姓名,max(case when to_char(時(shí)間點(diǎn),'hh24')='01' and 說明 is null then 體溫 when to_char(時(shí)間點(diǎn),'hh24')='01' and 說明 is not null and 體溫 is null then 說明 when to_char(時(shí)間點(diǎn),'hh24')='01' and 說明 is not null and 體溫 is not null '錄入有誤' end) 1點(diǎn),后面的類似一直寫到24點(diǎn) from table group by 病區(qū)號,姓名,護(hù)士姓名