我有一个空表temp_table
,其中有2列date
和id
。我需要使用1990年1月1日至2099年12月31日之间的日期填充日期,然后将日期转换为字符串(yyyymmdd
)。
日期格式可以是我只需要在末尾将其转换为字符串的任何格式
有人可以帮助我吗?
谢谢, 汤姆
答案 0 :(得分:1)
An alternate approach is to do everything in a data step
data calc_dates;
length date_str $10.;
date='01JAN1990'd;
date_str=put(date,ddmmyy10.);
output;
do while (date<'31DEC2099'd);
date=intnx('DAY',date,1);
date_str=put(date,ddmmyy10.);
output;
end;
format date date9.;
run;
答案 1 :(得分:0)
You really do need to try something. A do loop is all that's needed here.
*List of unique ID;
data ids;
do id=1 to 5;
output;
end;
run;
*list of dates;
data dates;
do date='01Jan1990'd to '31Dec2099'd;
output;
end;
run;
*full table;
proc sql;
create table want as
select id, date format=yymmddn8., put(date, yymmddn8.) as date_char
from ids, dates;
quit;
答案 2 :(得分:0)
我认为您需要将日期从1990年1月1日到19月12日至2099年,然后转换为字符串。以下是实现该目标的查询: 声明@startdate日期 声明@enddate日期
set @startdate ='1990-01-01' 设置@enddate ='2099-12-31'
选择convert(varchar(10),DATEADD(day,Nbr -1,@ startdate),112)作为date1 从 (选择ROW_NUMBER()over(按c.object_id排序)为Nbr 来自sys.columns c 吨 其中Nbr-1 <= datediff(day,@ startdate,@ enddate)