用case when
創(chuàng)新互聯(lián)專注于東洲網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供東洲營銷型網(wǎng)站建設(shè),東洲網(wǎng)站制作、東洲網(wǎng)頁設(shè)計(jì)、東洲網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造東洲網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供東洲網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
如:
select name,case when age3 then tranc(between_month(sysdate,生日)/12)
when age 1 and age3 then tranc(between_month(sysdate,生日)/12) then
when age 1 then between_month(sysdate,生日)/12
end case aaa
from 姓名表
可用to_char函數(shù)將date類型轉(zhuǎn)成字符類型。
如emp表中有如下數(shù)據(jù):
如果計(jì)算生日的方法是當(dāng)前日期的年份減去生日的年份,可用如下語句:
select?ename,hiredate,to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy')?from?emp;
查詢結(jié)果:
select floor(months_between(to_date(concat(extract(year from sysdate),'-10-31'),'YYYY-MM-DD'),to_date(生日的日期,'yyyy-mm-dd'))/12) from table_name
floor 向下取整
months_between 日期相差的月份數(shù)
concat字字符串連接
extract(year from sysdate) 返回當(dāng)前日期的年份
根據(jù)出生日期查詢年齡用的還挺多的。
簡(jiǎn)單分析一下,加入一個(gè)孩子五歲半了,那習(xí)慣認(rèn)為他還是5歲。
用Oracle提供的months_between()函數(shù),先獲取出生日期和當(dāng)前日期的月數(shù),然后除以12向下取整:
使用的時(shí)候,將時(shí)間段替換成出生日期對(duì)應(yīng)的字段即可。
如果,計(jì)算年齡用的次數(shù)非常多,最好寫成自定義函數(shù)。