BookmarkSubscribeRSS Feed
San_rise
Fluorite | Level 6

I am trying to import a pipe '|' delimited text file in SAS using PROC IMPORT. Though I am able to get most of the variable values except the date variable having value as '2020-07-14 11:00 EDT'. Please guide on how to handle this data.

 

Also please guide on various must use options while importing a text file so that no variables or values get missed out.

 

Thanks

3 REPLIES 3
ChrisNZ
Tourmaline | Level 20

> please guide on various must use options while importing a text file so that no variables or values get missed out.

This means not using proc import, but rather using a data step and an INFILE statement.

This will also allow you to process the date and time correctly.

Many resources on the web such as since one https://support.sas.com/techsup/technote/ts673.pdf

San_rise
Fluorite | Level 6

Please help by specifying the format and informat for the date value 2020-07-14 11:00 EDT (YYYY-MM-DD HH:MM ZONE)

Kurt_Bremser
Super User

See this:

proc format;
invalue ustz
  "AST" = 14400 /* ATLANTIC STANDARD TIME UTC - 4 */
  "EST" = 18000 /* EASTERN STANDARD TIME  UTC - 5 */
  "EDT" = 14400 /* EASTERN DAYLIGHT TIME  UTC - 4 */
  "CST" = 21600 /* CENTRAL STANDARD TIME UTC - 6 */
  "CDT" = 18000 /* CENTRAL DAYLIGHT TIME UTC - 5 */
  "MST" = 25200 /* MOUNTAIN STANDARD TIME  UTC - 7 */
  "MDT" = 21600 /* MOUNTAIN DAYLIGHT TIME  UTC - 6 */
  "PST" = 28800 /* PACIFIC STANDARD TIME UTC - 8 */
  "PDT" = 25200 /* PACIFIC DAYLIGHT TIME UTC - 7 */
  "AKST" = 32400 /* ALASKA TIME UTC - 9 */
  "AKDT" = 28800 /* ALASKA DAYLIGHT TIME  UTC - 8 */
  "HST" = 36000 /* HAWAII STANDARD TIME  UTC - 10 */
  "HAST" = 36000 /* HAWAII-ALEUTIAN STANDARD TIME UTC - 10 */
  "HADT" = 32400 /* HAWAII-ALEUTIAN DAYLIGHT TIME UTC - 9 */
  "SST" = 39600  /* SAMOA STANDARD TIME UTC - 11 */
  "SDT" = 36000 /* SAMOA DAYLIGHT TIME UTC - 10 */
  "CHST" = -36000 /* CHAMORRO STANDARD TIME  UTC +10 */
  other = 0
;

data want;
infile datalines;
input dttime e8601dt16. zone :$4.;
format dttime e8601dt19.;
dttime = dttime + input(zone,ustz.);
drop zone;
datalines;
2020-07-14 11:00 EDT
;

The result will be the datetime in UTC.

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 909 views
  • 1 like
  • 3 in conversation