将连续日期插入现有表中

时间:2019-01-09 21:31:17

标签: sql sas

我有一个空表temp_table,其中有2列dateid。我需要使用1990年1月1日至2099年12月31日之间的日期填充日期,然后将日期转换为字符串(yyyymmdd)。

日期格式可以是我只需要在末尾将其转换为字符串的任何格式

有人可以帮助我吗?

谢谢, 汤姆

3 个答案:

答案 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)