真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么限定年齡 oracle 出生日期算年齡

在oracle中,如何在指定條件下使用check約束 例如:男生年齡小于23歲,女生年齡小于21歲。

CREATE?TABLE?test_chk_case_when?(

為項(xiàng)城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及項(xiàng)城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、項(xiàng)城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

id???int,

name?varchar(10),

sex??varchar(4),

age??int

);

--?男生年齡小于23歲,女生年齡小于21歲。

ALTER?TABLE?test_chk_case_when

ADD?CONSTRAINT?chk_test_sex_age

CHECK?(

??CASE?WHEN?sex='男'?AND?age23?THEN?1

???WHEN?sex='女'?AND?age21?THEN?1

???ELSE?0?END?=?1

);

SQL?INSERT?INTO?test_chk_case_when?VALUES(1,?'張三',?'男',?22);

已創(chuàng)建?1?行。

SQL?INSERT?INTO?test_chk_case_when?VALUES(2,?'李四',?'男',?23);

INSERT?INTO?test_chk_case_when?VALUES(2,?'李四',?'男',?23)

*

ERROR?位于第?1?行:

ORA-02290:?違反檢查約束條件?(TEST.CHK_TEST_SEX_AGE)

SQL?INSERT?INTO?test_chk_case_when?VALUES(3,?'王五',?'女',?20);

已創(chuàng)建?1?行。

SQL?INSERT?INTO?test_chk_case_when?VALUES(4,?'趙六',?'女',?21);

INSERT?INTO?test_chk_case_when?VALUES(4,?'趙六',?'女',?21)

*

ERROR?位于第?1?行:

ORA-02290:?違反檢查約束條件?(TEST.CHK_TEST_SEX_AGE)

Oracle PL/SQL 計(jì)算年齡

根據(jù)出生日期查詢年齡用的還挺多的。

簡(jiǎn)單分析一下,加入一個(gè)孩子五歲半了,那習(xí)慣認(rèn)為他還是5歲。

用Oracle提供的months_between()函數(shù),先獲取出生日期和當(dāng)前日期的月數(shù),然后除以12向下取整:

使用的時(shí)候,將時(shí)間段替換成出生日期對(duì)應(yīng)的字段即可。

如果,計(jì)算年齡用的次數(shù)非常多,最好寫(xiě)成自定義函數(shù)。

關(guān)于oracle數(shù)據(jù)庫(kù) sql的寫(xiě)法 我想寫(xiě)一個(gè) 關(guān)于年齡分組的sql 按1-30歲,31-50歲,50以上. 想分成這3個(gè)年齡段

SELECT COUNT(CASE WHEN AGE BETWEEN 1 AND 30 THEN 1 ELSE 0 END) AS 1-30歲

,COUNT(CASE WHEN AGE BETWEEN 31 AND 50 THEN 1 ELSE 0 END) AS 31-50歲

,COUNT(CASE WHEN AGE 50 THEN 1 ELSE 0 END) AS 50以上

FROM TABLE_NAME;

這個(gè)語(yǔ)句就可以做到~

Oracle 根據(jù)出生日期計(jì)算年齡

可用to_char函數(shù)將date類型轉(zhuǎn)成字符類型。

如emp表中有如下數(shù)據(jù):

如果計(jì)算生日的方法是當(dāng)前日期的年份減去生日的年份,可用如下語(yǔ)句:

select?ename,hiredate,to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy')?from?emp;

查詢結(jié)果:

oracle 關(guān)于年齡計(jì)算問(wèn)題?

用month_between做,應(yīng)該會(huì)好一些。

select

當(dāng)前日期,

出生日期,

trunc(months_between(當(dāng)前日期,出生日期)/12) 年數(shù),

trunc(months_between(當(dāng)前日期,出生日期))%12 月數(shù),

ceil(當(dāng)前日期-add_month(出生日期,trunc(months_between(當(dāng)前日期,出生日期))) 天數(shù) from table

可能一些細(xì)微的地方還需要些調(diào)整,不過(guò)大體上應(yīng)該差不多了。

最后那個(gè)ceil可能要分成兩個(gè)case when的部分是

case when substr(to_char(當(dāng)前日期,'yyyy-mm-dd'),-5) != substr(to_char(出生日期,'yyyy-mm-dd'),-5) then trunc(當(dāng)前日期-add_month(出生日期,trunc(months_between(當(dāng)前日期,出生日期)))

when substr(to_char(當(dāng)前日期,'yyyy-mm-dd'),-5) = substr(to_char(出生日期,'yyyy-mm-dd'),-5) then 1 end 天數(shù)

我看了下你上面的兩個(gè)例子,好像因?yàn)槿掌谙嗟缺容^特殊,所以我嘗試用ceil試試,如果不行那么就用下面這個(gè),我估計(jì)差不多了,不過(guò)我可沒(méi)有環(huán)境,只能是憑空想象,剩下的只能你自己去實(shí)驗(yàn)和修改了。

oracle根據(jù)出生日期算年齡

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)前日期的年份


分享文章:oracle怎么限定年齡 oracle 出生日期算年齡
文章來(lái)源:http://weahome.cn/article/hhogcp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部