Advent of Code is back! Unwrap daily challenges to sharpen your Alteryx skills and earn badges along the way! Learn more now.

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Date/Time Parsing Excel AM/PM format

Domo
7 - Meteor

Hello everyone,

 

I currently have excel as an input in my workflow containing dates/times that have a vlookup formula. When importing, Alteryx put's this in an excel format (i.e. 16/01/2017 9:45:09 AM) which isn't recognisable. Is there a formula I can use so it understands it a Date/time format (i.e. 2017-01-16 09:45:09)?

 

Capture.JPG

Thank you.

 

 

8 REPLIES 8
jdunkerley79
ACE Emeritus
ACE Emeritus

A little fiddly format to deal with but here goes:

 

IF REGEX_Match([DateString], "\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{1,2}:\d{1,2} [AP]M") THEN
	DateTimeAdd(
	DateTimeParse(
		Replace(Trim(REGEX_Replace(" " + [DateString],"([/ :])(\d)(?=[/ :])","${1}0$2"))," 12:"," 00:"),
		"%d/%m/%Y %H:%M:%S %X"),
		IIF(Contains([DateString],"AM"),0,12), "hours")
ELSE
	[DateString]
ENDI

So to explain:

IF REGEX_Match([DateString], "\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{1,2}:\d{1,2} [AP]M") THEN

tells the formula to only care deal with strings which match the format you supplied (with or without leading 0 in day, month, hour, minute or second parts).

 

The:

Trim(REGEX_Replace(" " + [DateString],"([/ :])(\d)(?=[/ :])","${1}0$2"))

adds all the missing leading zeros to the string.

 

The:

Replace(...," 12:"," 00:")

 

handles the fact that we need to treat 12 as 0 for parsing purposes.

 

Next the:

DateTimeParse(...,"%d/%m/%Y %H:%M:%S %X")

parses the string into Alteryx's date format. The %X is supposed to handle AM/PM but on mine seemed to be ignoring it so...

 

DateTimeAdd(...,IIF(Contains([DateString],"AM"),0,12), "hours")

corrects for PM.

 

Sample attached.

MichaelCh
Alteryx
Alteryx

The DateTimeParse function in the Formula tool supports AM/PM parsing with a 12-hour specifier.

 

DateTimeParse([ExcelDateField], '%d/%m/%Y %I:%M:%S %p')


Sample workflow attached.

jdunkerley79
ACE Emeritus
ACE Emeritus

Don't believe %I and %p or %P are supported in DateTimeParse prior to version 11.0: https://help.alteryx.com/10.6/index.htm#Reference/DateTimeFunctions.htm#Format

MichaelCh
Alteryx
Alteryx

Right you are! I did not realize that. Thanks for pointing that out. Something to look forward to, then.

Domo
7 - Meteor

Love you work jdunkerley. You solved my half day headache in one neat formula :)

aclaxton
8 - Asteroid

That simple parse saved me so much time @MichaelCh!

Ty
5 - Atom

Found this article yesterday Googling.

 

Below please find more details on a similar use case.

 

1st, thanks for the solutions above!

 

If you're having trouble with %p or %P, I was too.

Usecase: Passing AM/PM am/pm, when time appears to parse but AM/PM am/pm breaks...

 

AM/PM am/pm explained:

%p = upper case

%P = lower case

 

Hours explained:

%H   

Hours in a twenty-four hour clock, from 00 to 23.

%I

The hour on a twelve hour clock, from 00 to 12.

 

%H will work if you have an AM + PM.. For me, %p %P breaks.

%I helped me pass %p.

 

From paste above:

%m/%d/%Y %I:%M:%S %p

and the specifiers work correctly in the DateTime tool.

 

Best,

Ty

NJT
11 - Bolide

This one works now so it's a lot easier than the Regex option, at least in 2019.1 it works.

Labels