2017-01-05 1 views
1

У меня есть таблица с столбцом as_of_date, которая отформатирована как MMDDYY10. в SAS 7.1не может вставить mmddyy10. format proc sql

proc sql; 
    INSERT INTO mytable (as_of_date) 
    VALUES (12/31/2016); 
run; 

и я получаю следующее сообщение об ошибке:
ERROR 22-322: ошибка синтаксиса, ожидая одно из следующих действий: строка в кавычках, числовая константа, даты и времени константа, отсутствующее значение,), +, ',', -, MISSING, NULL, USER.

ОШИБКА 200-322: Символ не распознается и будет игнорироваться.

Примечание: если я изменю значение до 12/31/16, оно по-прежнему не работает. Если я поставлю кавычки вокруг него ('12/31/2016 '), я получаю сообщение об ошибке:
ОШИБКА: Значение 1 из предложения VALUES 1 не соответствует типу данных соответствующего столбца в списке объектов (в SELECT ).

Если вставить ее без косой черты (12312016) она вставляется без ошибок, как ********

ответ

1

Вы должны использовать формат DDMMMYYYY в кавычках и модификатор d:

proc sql noprint; 
    INSERT INTO mytable (as_of_date) 
    VALUES ("31dec2016"d); 
quit; 

Другой способ взглянуть на это - SAS ищет числовое значение под форматом даты. Вы можете проверить фактическое значение и использовать следующий код, чтобы получить тот же результат:

data check; 
    date = "31dec2016"d; 
run; 

proc sql noprint; 
    INSERT INTO mytable (as_of_date) 
    VALUES (20819); 
quit; 
+0

спасибо, это сработало. –