我有一個在 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 資料庫。
uj5u.com熱心網友回復:
使用 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
uj5u.com熱心網友回復:
我認為 DB2 支持 DAYS_BETWEEN() 函式,該函式將為您提供 2 個日期引數之間的天數。 https://www.db2tutorial.com/db2-date-functions/
uj5u.com熱心網友回復:
使用 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/470828.html