2017-02-02 2 views
0

Мне нужно написать скрипт, который преобразует символические данные в формат данных. У меня есть таблица со столбцом date, содержащая строки, такие как 28.01.2017 09:23:14. Мне нужно преобразовать их в формат даты 28.23.2017. я попробовал:Convert string column 'dd.mm.yyyy hh: mm: ss' в формат даты SAS 'dd.mm.yyyy'

data SMS_STAT; 
    set SMS_STAT; 
    date = input(date, DDMMYY9.); 
    put date = DDMMYY9.; 
run; 

Кроме того, я попытался diffrent форматы в date и put, но это не помогло: он превращается в .

Я substringed 28.01.2017 09:23:14 к 28.01.2017 так что теперь, я хочу введите дату из него.

+1

У вас есть вопросы синтаксиса. 1) те обратные кавычки вызовут проблему 2) аргумент 2 функции INPUT, формат требует точки как DDYYMM9. –

+0

Привет, Владислав. Просьба уточнить контекст проблемы. Это сценарий? Я не могу поймать. См. Также http://stackoverflow.com/help/how-to-ask –

+0

@VitaliyPro Да, это скрипт –

ответ

3

Давайте сделаем набор данных с символьной переменной DATE со значениями, такими как: 28.01.2017 09:23:14.

data have ; 
    date='28.01.2017 09:23:14'; 
run; 

Если вы просто хотите взять часть даты и оставить его в виде строки, а затем просто использовать функцию SCAN() или SUBSTR().

data want; 
    set have ; 
    date = scan(date,1,' '); 
run; 

Если вы хотите, чтобы сделать фактическую переменную даты, то вам необходимо создать новую переменную, так как даты требуют числовые переменные вместо переменных символов. Вы можете использовать функцию INPUT() для чтения текущей строки в дату. Затем вы можете прикрепить любой формат, который хотите, чтобы SAS отображал данные.

data want ; 
    set have ; 
    date2 = input(scan(date,1,' '),ddmmyy10.); 
    format date2 mmddyyp10. ; 
run; 

Если вы просто хотите оставить его в виде строки и обратный день и месяц поля, то, возможно, это даже проще просто использовать функцию SUBSTR().

data want ; 
    set have ; 
    substr(date,1,5) = substr(date,4,2)||'.'||substr(date,1,2) ; 
run; 
0

На самом деле,, наконец, я пришел к этому решению:

dates = substr(date, 1, 10); 
d=input(dates,DDMMYY10.); 
format d DATE9.; 
+0

Вы ищете конечный результат, который будет отображаться как 'date9.' или' mmddyyp10.'? Я думаю, что в вопросе вы ищете его. Может быть, отредактируйте одну из двух для согласованности? Благодаря... – Snorex

Смежные вопросы