在 Proc SQL/SAS 中减去日期
Subtracting dates in Proc SQL/SAS
我在 SAS Enterprise Guide 中有一个 Proc SQL 代码块 运行。我需要找到两个日期之间的天数
proc sql;
select col_A,col_B,col_C, (put (date(),yymmdd10.) - col_C) as age_bucket
from DB2.Table_A;
quit;
col_C 是 'YYYY-MM-DD' 格式的日期(例如 2022-05-02)
我从今天的日期中减去 col_C,并希望得到它们之间的总天数 age_bucket。我收到以下错误。
ERROR: Expression using subtraction (-) requires numeric types.
我该怎么做?
Table_A 来自 DB2 数据库。
我认为 DB2 支持 DAYS_BETWEEN() 函数,它会为您提供两个日期参数之间的天数。
https://www.db2tutorial.com/db2-date-functions/
使用PUT()函数将当前日期转换为字符串,将无法对结果进行运算。
如果 COL_C 有 DATE 值,则该值的显示方式无关紧要(格式只会影响值的显示方式)。 DATE 值就是自 1960 年以来的天数。您只需将两个数字相减即可计算出天数差。
(date() - col_C) as age_bucket
如果 COL_C 有 DATETIME 值(自 1960 年以来的秒数),则首先将其转换为 DATE 值。
(date() - datepart(col_C)) as age_bucket
如果 COL_C 是 YYYY-MM-DD 样式的字符串,则使用带有 YYMMDD 信息的 INPUT() 函数将字符串转换为日期值。
(date() - input(col_C,yymmdd10.)) as age_bucket
使用 YRDIF 函数获取年龄。减去日期将得到您的年龄天数。
两个日期都应该是 SAS 日期,日期格式为数字。
proc sql;
select col_A,
col_B,
col_C,
floor(YRDIF(input(col_C, yymmdd10.), today(),"AGE")) as age_bucket
from DB2.Table_A;
quit;
我在 SAS Enterprise Guide 中有一个 Proc SQL 代码块 运行。我需要找到两个日期之间的天数
proc sql;
select col_A,col_B,col_C, (put (date(),yymmdd10.) - col_C) as age_bucket
from DB2.Table_A;
quit;
col_C 是 'YYYY-MM-DD' 格式的日期(例如 2022-05-02) 我从今天的日期中减去 col_C,并希望得到它们之间的总天数 age_bucket。我收到以下错误。
ERROR: Expression using subtraction (-) requires numeric types.
我该怎么做? Table_A 来自 DB2 数据库。
我认为 DB2 支持 DAYS_BETWEEN() 函数,它会为您提供两个日期参数之间的天数。 https://www.db2tutorial.com/db2-date-functions/
使用PUT()函数将当前日期转换为字符串,将无法对结果进行运算。
如果 COL_C 有 DATE 值,则该值的显示方式无关紧要(格式只会影响值的显示方式)。 DATE 值就是自 1960 年以来的天数。您只需将两个数字相减即可计算出天数差。
(date() - col_C) as age_bucket
如果 COL_C 有 DATETIME 值(自 1960 年以来的秒数),则首先将其转换为 DATE 值。
(date() - datepart(col_C)) as age_bucket
如果 COL_C 是 YYYY-MM-DD 样式的字符串,则使用带有 YYMMDD 信息的 INPUT() 函数将字符串转换为日期值。
(date() - input(col_C,yymmdd10.)) as age_bucket
使用 YRDIF 函数获取年龄。减去日期将得到您的年龄天数。
两个日期都应该是 SAS 日期,日期格式为数字。
proc sql;
select col_A,
col_B,
col_C,
floor(YRDIF(input(col_C, yymmdd10.), today(),"AGE")) as age_bucket
from DB2.Table_A;
quit;