I have a MS SQL-Server table that contains a character field with date values representing a quarter year with the format YYYY-Q1. The SAS provided informat YYQ. won't work because the field contains a hyphen (-) between the year and the quarter.
I have tried creating a picture informat, but with no success.
proc format;
picture yyqtr
low-high = "%Y-Q%q" (DATATYPE=datetime);
run;
The picture syntax is only for formats.
If you want to create an informat, this works:
proc format;
invalue nodash 's/-//' (regexpe)=[yyq6.];
data T;
DATE=input('2020-Q1',nodash7.);
run;
Use COMPRESS() to remove the -?
want = input(compress(var, "-"), YYQ6.);
@Jim_Cooper_hmsa wrote:
I have a MS SQL-Server table that contains a character field with date values representing a quarter year with the format YYYY-Q1. The SAS provided informat YYQ. won't work because the field contains a hyphen (-) between the year and the quarter.
I have tried creating a picture informat, but with no success.
proc format;
picture yyqtr
low-high = "%Y-Q%q" (DATATYPE=datetime);run;
The picture syntax is only for formats.
If you want to create an informat, this works:
proc format;
invalue nodash 's/-//' (regexpe)=[yyq6.];
data T;
DATE=input('2020-Q1',nodash7.);
run;
Chris,
This is very cool. I think that I was approaching the problem from the wrong direction. i should have been looking for an INVALUE solution instead of a PICTURE solution, This is awesome.
Mahalo Nui
Ngā mihi maioha
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.