Как преобразовать дату из SAS в числовой формат ГГГГММДД

В таблице test_1 поле my_date - это «DATE9». формат.
Я хотел бы преобразовать его в чисто числовой формат (число длина 8), который имеет форму YYYYMMDD.
Я также хотел бы сделать это в инструкции proc sql Идеально.

Вот что у меня есть на данный момент.
Очевидно, мне нужно что-то для управления полем my_date.

rsubmit;
proc sql;
    CREATE TABLE test_2 AS      
    SELECT
        my_date
    FROM
        test_1
    ;
quit;    
endrsubmit;

К вашему сведению: мне довольно сложно понять различные методы в SAS.

Чтобы уточнить, поле должно быть числом, а не символьным полем или датой.


person cammil    schedule 05.08.2014    source источник
comment
Что вы имеете в виду под словом «преобразовать»? Вы просто хотите, чтобы это выглядело как 20141231? Или вы хотите, чтобы это было число 20141231 на самом деле (что не является датой, насколько это понимает SAS)?   -  person Joe    schedule 05.08.2014
comment
да, мне нужно, чтобы это было реальное число. ive отредактировал вопрос, чтобы сделать его более ясным.   -  person cammil    schedule 05.08.2014


Ответы (2)


Если вы хотите, чтобы в поле сохранялось значение 20141231 для 31DEC2014, вы можете сделать это:

proc sql;
  create table want as
   select input(put(date,yymmddn8.),8.) as date_num
     from have;
quit;

input(..) что-то превращает в число, put(..) что-то превращает в строку. В этом случае мы сначала put его в желаемом формате (yymmddn8. - это ГГГГММДД без разделителя), а затем input с 8., который является длиной строки, которую мы читаем.

Как правило, этого не следует делать не; хранить даты в виде чисел их строкового представления - очень плохая идея. Старайтесь оставаться в рамках форматов даты, поскольку с ними будет намного легче работать, когда вы их изучите, и SAS с радостью будет работать с другими базами данных, чтобы также использовать их типы даты. Если вам нужно представление «20141231» (например, чтобы поместить его в текстовый файл), сделайте его символьной переменной.

person Joe    schedule 05.08.2014

Не надо.

Вы теряете возможность использовать встроенные функции SAS для вычисления даты.

SAS хранит даты в виде чисел, где 0 означает 1 января 1960 года, а оттуда - приращения. Форматы используются для отображения желаемых форматов для отчетов и презентаций.

person Reeza    schedule 05.08.2014
comment
Это комментарий, а не ответ. Подобные вещи допустимы, если они включены в фактический ответ (см. Мой ответ), но если они просто говорят пользователю не делать [x вещей, о которых спрашивает пользователь], не предоставляйте это в качестве ответа. - person Joe; 06.08.2014
comment
Согласитесь с Джо здесь. Я не хотел вдаваться в подробности, зачем мне это нужно, потому что это загромождает мой вопрос и затрудняет понимание другими. - person cammil; 06.08.2014
comment
Справедливо. Какой здесь протокол, пусть ответ будет отвергнут, или удалить (если это вообще возможно)? - person Reeza; 07.08.2014