oracle 周岁年龄计算
以下三种方法均可实现周岁年龄的计算:
--算法一:
SELECT TRUNC(months_between(sysdate, csrq)/12) AS "Age" FROM wrxxb; --算法二:
SELECT trunc(to_number(to_char(sysdate,'yyyymmdd'))/10000 - to_number(to_char(to_date('1982-8-28','yyyy-mm-dd'),'yyyymmdd'))/10000) FROM dual; --算法三:
SELECT to_char(sysdate,'yyyy')-to_char(csrq,'yyyy')+ decode(sign(to_char(sysdate,'mmdd')-to_char(csrq,'mmdd')),-1,-1,0,0,1,0) FROM wrxxb
计算日期年月日周季度等
select
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周, yyyyiw 显示201152
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求当年的第几天
to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度
from dual
实现字符串乘法,如传入:str='2,3,1', times=2, 输出:‘4,6,2’
自定义函数
create or replace function str_mul(str in varchar2,
times in number)
return varchar2 authid current_user is
cursor str_split is
select regexp_substr(str,'[^,]+',1, level) num
from dual
connect by level <= length(str) - length(REGEXP_REPLACE(str, ',', ''))+1;
res varchar2(2000);
--num_str str_split%rowtype;
begin
for num_str in str_split loop
if num_str.num is not null then
res := res || num_str.num*times || ',';
--insert into SalesList select v_kh.keHu, v_sp.shangPin, floor(dbms_random.value(10,50)) from dual;
--stmt := 'select count(*) from ' || owner || '.' || table_name || ' where ' || col_name || ' is null';
--execute immediate stmt into counts;
end if;
end loop;
--commit;
return substr(res, 1, length(res)-1);
end; --select str_mul('3,,2,1', 3) from dual
json解析 12c以上版本
--从JSONArray中取数据
SELECT jt.*
FROM JSON_TABLE('[
{
"device_type_id": 1,
"amount": 120,
"remarks": ""
},
{
"device_type_id": 2,
"amount": 122,
"remarks": ""
},
{
"device_type_id": 3,
"amount": 123,
"remarks": "11111111111"
}
]',
'$'COLUMNS(
NESTED PATH '$[*]' COLUMNS (
device_type_id VARCHAR2(32) PATH '$.device_type_id',
amount VARCHAR2(32) PATH '$.amount',
remarks VARCHAR2(32) PATH '$.remarks')
)
) AS jt; --从JSONObject对象中取数据
SELECT jt.*
FROM JSON_TABLE('{
"detailed": [
{
"device_type_id": 1,
"amount": 120,
"remarks": ""
},
{
"device_type_id": 2,
"amount": 122,
"remarks": ""
}
]
}',
'$'COLUMNS(
NESTED PATH '$.detailed[*]' COLUMNS (
device_type_id VARCHAR2(32) PATH '$.device_type_id',
amount VARCHAR2(32) PATH '$.amount',
remarks VARCHAR2(32) PATH '$.remarks')
)
)
AS jt; --从三层嵌套的JSONObject对象中取数据
SELECT jt.*
FROM JSON_TABLE('{
"certificate": "14531209693428a799591c0248bb95c3",
"rows": [
{
"odo_id": "0",
"odo_no": "ZC-FY-20170217001",
"stamp": "2017-02-24",
"order_no": "ZC-DD-20170210001",
"partners_id": "213",
"shipping_address": "深圳市福田区科技园南区T2-B栋601",
"contacts": "李魁",
"tel": "13510141822",
"self_mention": "0",
"detailed": [
{
"device_type_id": "1",
"amount": "121",
"remarks": ""
},{
"device_type_id": "2",
"amount": "122",
"remarks": ""
}
]
},{
"odo_id": "0",
"odo_no": "ZC-FY-20170217002",
"stamp": "2017-02-24",
"order_no": "ZC-DD-20170210001",
"partners_id": "213",
"shipping_address": "深圳市福田区科技园南区T2-B栋601",
"contacts": "李魁",
"tel": "13510141822",
"self_mention": "0",
"detailed": [
{
"device_type_id": "3",
"amount": "123",
"remarks": ""
},{
"device_type_id": "4",
"amount": "124",
"remarks": ""
}
]
}
]}',
'$'COLUMNS(
requestor VARCHAR2(32) PATH '$.certificate',
NESTED PATH '$.rows[*]' COLUMNS (
odo_no VARCHAR2(32) PATH '$.odo_no',
NESTED PATH '$.detailed[*]' COLUMNS (
phone_type VARCHAR2(32) PATH '$.device_type_id',
phone_num VARCHAR2(20) PATH '$.amount'
)
)
)
) AS jt;
oracle自带函数
oracle 周岁年龄计算的更多相关文章
- 虚拟机VMWARE上ORACLE License 的计算
Oracle License的计算有两种方式:按照用户数和CPU个数. 其中按CPU计算方式如下: License Number = The Number of CPU Cores * Core ...
- javascript根据身份证号判断精确周岁年龄
前言: 根据身份证号判断精确周岁年龄,可以精确到天,即周岁以生日当天为准,生日当天周岁+1,少一天则不加. 实现方法: <!DOCTYPE html> <html> <h ...
- mysql 年龄计算(根据生日字段)
mysql 年龄计算(根据生日字段) year( from_days( datediff( now( ), birthdate))) //获取年龄 now() 当前时间,精确到秒 datediff(b ...
- 查询GC日志、动态年龄计算
https://www.cnblogs.com/onmyway20xx/p/6590603.html 从实际案例聊聊Java应用的GC优化 动态年龄计算 关于上文中提到晋升年龄阈值为2,很多同学有疑问 ...
- Oracle时间日期计算--计算某一日期为一年中的第几周
Oracle时间日期计算--计算某一日期为一年中的第几周 select to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw') ...
- oracle笔记之计算年龄、工龄和TRUNC
方法一:利用months_between 函数计算 SELECT TRUNC(months_between(sysdate, birthday)/12) AS agefrom dual; 方法二:日期 ...
- oracle 根据出生日期计算年龄的年月日
select years,months,abs( trunc( newer_date- add_months( older_date,years*12+months ) ) ) days from ( ...
- oracle 年龄计算 岁 月 天
select trunc(months/12) || '岁' || trunc(mod(months, 12)) || '月' || trunc(sysdate - add_months( ...
- Oracle 通过出生日期计算年龄
方法一: SELECT TRUNC(months_between(sysdate, birth)/12) AS age from mytable 方法二: select TRUNC((to_char( ...
随机推荐
- 《数据挖掘导论》实验课——实验二、数据处理之Matplotlib
实验二.数据处理之Matplotlib 一.实验目的 1. 了解matplotlib库的基本功能 2. 掌握matplotlib库的使用方法 二.实验工具: 1. Anaconda 2. Numpy, ...
- CodeForces - 1263E(线段树维护前缀和最值)
题意 https://vjudge.net/problem/CodeForces-1263E 您要设计一个只有一行的打字机,这一行的长度是无限大,一开始可以认为每个字符都是空.您的打字机有一个光标只指 ...
- Acwing40. 顺时针打印矩阵
地址 https://www.acwing.com/solution/acwing/content/3623/ 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 样例 输入: [ [, ...
- poj 3069 Saruman's Army 贪心 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=3069 题解 题目可以考虑贪心 尽可能的根据题意选择靠右边的点 注意 开始无标记点 寻找左侧第一个没覆盖的点 再来推算既可能靠右的标记点为一 ...
- 设计模式-Composite(结构型模式) 用于 递归构建 树 状 的组合结构,与Decorator的区别是 Composite旨在通过构造子类而添加新操作,而Decorator直接添加新操作。
以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Component.h #pragma once class Component { public: Component( ...
- 2019.10.02模拟赛T3
题目大意: 设$S(n,m)$为第二类斯特林数,$F_i$表示斐波那契数列第$i$项. 给定$n,R,K$,求$\sum\limits_{i=1}^{n}(\sum\limits_{m=1}^{R}F ...
- PKUWC/SC 做题笔记
去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...
- php精确计算
php BC高精确度函数库 结果: php一般的取余 只是除以整数 bc精度取余 精确到了小数
- 使用os模块动态获取目录或文件路径
在接口自动化测试框架中,我们的代码除了能在本地运行,也能在不在修改代码的前提下在其他的环境下能够运行,这样才能达到高复用性和低维护成本,我们在接口测试的模块调用中,会定义很多相关路径,而这些路径必须使 ...
- PHP JWT token实现
原文链接:https://www.jb51.net/article/146790.htm 机制: 代码如下: <?php /** * PHP实现jwt */ class Jw ...