The migration assistant for Access will by default up-size to the newer datetime2 columns.
If you continue to use the default (legacy) SQL driver with Access or say crystal reports as the client to SQL server, then all such columns will be returned as STRINGS when using the older driver.
The two solutions I would suggest thus are:
One:
Re-migrate the data and tables again, but BEFORE you up-size the data you change the field mappings in SSMA to use the older datetime format as opposed to datetime2.
Two:
Don’t use the legacy ODBC driver. Use the native 10 or 11 driver, and thus the datetime2 columns WILL be returned as actual date time columns with the ODBC driver. The only downside of this suggesting is these native SQL 10 or 11 drivers are NOT installed by default – so people often use the older legacy drivers for ease of distribution – especially for Access front ends that connect to SQL server. And to be fair, the older legacy SQL driver is VERY old - so it is in general recommend to use the native 11 driver these days.
While using native 10 or 11 drivers will fix this issue, those drivers will have to be installed on each workstation. So using the new SQL drivers with crystal will fix this issue.
It would be INCREDIBLE silly to have to start writing custom quires and views SQL server side to “convert” the date/time2 columns to the older datetime format in each query – I would strong ignore such suggestions being floated here. CR can work and use the datetime2 - but not when using the older SQL driver - simply adopt the native drivers and this issue goes away.