I have been facing typical comparison issue with datetime and datime2. I am unable to understand why in 1 & 2 doesn't return equal result. I have read about how datetime value stored from msdn and based on that for 1 - it should have returned equal as 993 will be rounded off to 993 and comparing with 99300000 should have resulted equal. I am using SQL Server 2014.
Please let me know if anyone has idea about the same.
1)
declare @dtest datetime2(7)
set @dtest = '2018-06-25 16:46:38.9930000'
declare @dtest1 datetime
set @dtest1 = '2018-06-25 16:46:38.993'
if @dtest < @dtest1
print 'datetime2 lesser'
2)
declare @dtest2 datetime2(7)
set @dtest2 = '2018-06-25 16:46:38.9970000'
declare @dtest3 datetime
set @dtest3 = '2018-06-25 16:46:38.997'
if @dtest2 > @dtest3
print 'datetime2 greater'
3)
declare @dtest4 datetime2(7)
set @dtest4 = '2018-06-25 16:46:38.9900000'
declare @dtest5 datetime
set @dtest5 = '2018-06-25 16:46:38.990'
if @dtest4 = @dtest5
print 'datetime2 and datetime equal'