How to convert a string to date and extract values in Access query

Access can't cope with the milliseconds in your date strings.

Use Left() to exclude them and feed the resulting substring to CDate().

SELECT CDate(Left(gmt, 20)) AS date_from_string
FROM Table1;

Once you have a valid Date/Time value, you can use Year(<Date/Time value>) or DatePart("yyyy", <Date/Time value>) to extract the year. And DatePart("y", <Date/Time value>) will give you the day of the year.