在oracle中我們經(jīng)常會(huì)和日期打交道,在做報(bào)表的時(shí)候經(jīng)常會(huì)用日?qǐng)?bào),周報(bào),月報(bào)之類的條件進(jìn)行分組;
在Oracle中我們經(jīng)常會(huì)和日期打交道,在做報(bào)表的時(shí)候經(jīng)常會(huì)用日?qǐng)?bào),周報(bào),月報(bào)之類的條件進(jìn)行分組;
我寫了些例子來(lái)啟發(fā)下大腦
select Sysdate from dual
select to_char(sysdate,'yyyy') as 年 from dual
select to_char(sysdate,'mm') as 月 from dual
select to_char(sysdate,'dd') as 日 from dual
select to_char(sysdate,'iw') as 周一到周日為一周 from dual
select to_char(sysdate,'ww') as 一月一日加6為一周類推 from dual
select to_char(sysdate,'HH24:mi:ss') as 時(shí)分秒 from dual
--根據(jù)年分組
select to_char(sysdate,'yyyy') as 年 from dual
--根據(jù)月分組
select to_char(sysdate,'yyyy-mm') as 年 from dual
--根據(jù)天分組
select to_char(sysdate,'yyyy-mm-dd') as 年 from dual
--根據(jù)周分組
select to_char(sysdate,'yyyy-iw') as 年 from dual
select to_char(sysdate,'yyyy-ww') as 年 from dual
注意:
按照周進(jìn)行分組會(huì)出現(xiàn)問(wèn)題:如:2012年12月31日 是周一所以就會(huì)歸結(jié)到2013年的第一周中,iw查詢出來(lái)的結(jié)果是01但是yyyy對(duì)應(yīng)的是還2012所以就和2012年一月的第一周無(wú)法區(qū)分開(kāi)。
方法二:
查詢出指定日期所在周的開(kāi)始結(jié)束的時(shí)間:
--規(guī)定每周是從周一開(kāi)始,周末結(jié)束
select next_day(sysdate,2)-7 from dual --得到周一
select next_day(sysdate,1) from dual --得到周末
next_day() 獲取下一個(gè)周日(1),一(2),二(3),三(4),四(5),,五(6),六(7)
用中文也是可以的:
--規(guī)定每周是從周一開(kāi)始,周末結(jié)束
select next_day(sysdate,'星期一')-7 from dual --得到周一
select next_day(sysdate,'星期日') from dual --得到周末
得到日期范圍后將這個(gè)范圍拼接在一起進(jìn)行分組就可以了
--根據(jù)省份分組,省份列種包含市(福建福州,黑龍江牡丹江)
/*
思路:1.先用substr(列明,開(kāi)始位置第一個(gè)為1,截取字?jǐn)?shù))來(lái)切割省份列
2.截取后黑龍江變成黑龍后要恢復(fù)回來(lái)
case
when substr(列名,1,2) like '黑龍' then '黑龍江'
when substr(列名,1,2) like '內(nèi)蒙' then '內(nèi)蒙古'
else
to_char(substr(列明,1,2))
end
*/
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com