Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 甲骨文将出生日期改为年龄_Oracle_Date_Formatting - Fatal编程技术网

Oracle 甲骨文将出生日期改为年龄

Oracle 甲骨文将出生日期改为年龄,oracle,date,formatting,Oracle,Date,Formatting,我需要使用日期格式和系统日期中的Dob列将出生日期转换为当前年龄(以年为单位),但将结果填充到Dob列中。 日期格式为dd-mm-yy。 我已尝试使用to_char和to_number函数从sys date中减去,假设您只需要几年,并且您的dob列是date,您可能需要: select dob, floor(months_between(sysdate, dob) / 12) age from yourTable 例如: with yourTable(dob) as ( select

我需要使用日期格式和系统日期中的Dob列将出生日期转换为当前年龄(以年为单位),但将结果填充到Dob列中。 日期格式为dd-mm-yy。
我已尝试使用to_char和to_number函数从sys date中减去,假设您只需要几年,并且您的
dob
列是
date
,您可能需要:

select dob, floor(months_between(sysdate, dob) / 12) age
from yourTable
例如:

with yourTable(dob) as (
    select date '2000-02-01' from dual union all
    select date '2000-02-02' from dual union all
    select date '2000-01-31' from dual 
    )
select dob, floor(months_between(sysdate, dob) / 12) age
from yourTable
给出:

DOB               AGE
---------- ----------
2000-02-01         18
2000-02-02         17
2000-01-31         18

3 rows selected.

如果您需要年、月和日作为出生日期列。您可以执行以下操作

select sysdate,
  date_of_birth,
  trunc(months_between(sysdate,date_of_birth) / 12) as years,
  trunc(months_between(sysdate,date_of_birth) -
    (trunc(months_between(sysdate,date_of_birth) / 12) * 12)) as months,
  trunc(sysdate) - add_months(date_of_birth, trunc(months_between(sysdate,date_of_birth))) as days
from table_name;

请张贴您迄今为止所做的尝试,以及一些样本数据和所需结果。例如,是否只需要年作为整数?奇特小数。。。
date
列没有“格式”。类似于
(sysdate-dob)/365
的东西可能就是您想要的