The LOAD CVS parsing capabilities provide a basic, but usually sufficient set of tools for your purpose. The crucial ETL step seems to bea decent decomposition of the input along its variety of separators.
Lets have a look:
input "myfile.csv"
date,time
29 September 2019, 8:50 PM
30 September 2019, 7:15 AM
cypher test 01:
LOAD CSV WITH HEADERS FROM 'file:///myfile.csv' AS line FIELDTERMINATOR ','
RETURN line.time, line.date
returns
" 8:50 PM" "29 September 2019"
" 7:15 AM" "30 September 2019"
cypher test 02:
LOAD CSV WITH HEADERS FROM 'file:///myfile.csv' AS line FIELDTERMINATOR ','
WITH SPLIT(trim(line.date), " ") as theDate, SPLIT(trim(line.time), " ") AS theTime
RETURN theDate, theTime
returns
theDate, theTime
["29", "September", "2019"] ["8:50", "PM"]
["30", "September", "2019"] ["7:15", "AM"]
cypher test 03:
LOAD CSV WITH HEADERS FROM 'file:///myfile.csv' AS line FIELDTERMINATOR ','
WITH SPLIT(trim(line.date), " ") as theDate, SPLIT(trim(line.time), " ") AS theTime
WITH theDate, split(theTime[0], ':') AS theTimeUnits, theTime[1] AS theTimeFlag
RETURN theDate, theTimeUnits, theTimeFlag
returns
theDate, theTimeUnits theTimeFlag
["29", "September", "2019"] ["8", "50"] "PM"
["30", "September", "2019"] ["7", "15"] "AM"