Проблема заключается в том, что SQL Server неявно осуществляет приведение для сравнения, и это изменяет значения. Явно приведите к Datetime, и вы должны получить ожидаемые результаты.
Это помогает показать, что сейчас происходит за кулисами и приводит к неожиданным результатам:
declare @dt2 datetime2(7) = '2018-06-25 16:46:38.9930000'
declare @dt datetime
set @dt = @dt2
SELECT
@dt2 AS [Datetime2 value]
, @dt AS [Datetime value]
, CONVERT(DATETIME2,@dt) AS [Datetime converted to Datetime2]
, CONVERT(DATETIME2,@dt2) AS [Datetime2 converted to Datetime2]
, CONVERT(DATETIME,@dt) AS [Datetime converted to Datetime]
, CONVERT(DATETIME,@dt2) AS [Datetime2 converted to Datetime]
![enter image description here](https://i.stack.imgur.com/R3ph2.jpg)