diff --git a/ChangeLog/7.0.3_dev.txt b/ChangeLog/7.0.3_dev.txt index e69de29bb2..2e162268ef 100644 --- a/ChangeLog/7.0.3_dev.txt +++ b/ChangeLog/7.0.3_dev.txt @@ -0,0 +1 @@ +[sqlserver] Fixed TimeSpan.Ticks extraction problem \ No newline at end of file diff --git a/Orm/Xtensive.Orm.SqlServer/Sql.Drivers.SqlServer/v13/Compiler.cs b/Orm/Xtensive.Orm.SqlServer/Sql.Drivers.SqlServer/v13/Compiler.cs index 3354935396..371cc0f398 100644 --- a/Orm/Xtensive.Orm.SqlServer/Sql.Drivers.SqlServer/v13/Compiler.cs +++ b/Orm/Xtensive.Orm.SqlServer/Sql.Drivers.SqlServer/v13/Compiler.cs @@ -36,7 +36,7 @@ public override void Visit(SqlFunctionCall node) // we have to use time consuming algorithm here because // DATEDIFF_BIG can throw arithmetic overflow on nanoseconds // so we should handle it by this big formula - Visit(CastToLong(DateTimeSubtractDateTimeExpensive(binary.Right, binary.Left))); + Visit(CastToLong(DateTimeSubtractDateTimeExpensive(binary.Left, binary.Right))); } else { base.Visit(node); diff --git a/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTime/PartsExtractionTest.cs b/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTime/PartsExtractionTest.cs index 2c66c2e2ce..3b6e4f286b 100644 --- a/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTime/PartsExtractionTest.cs +++ b/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTime/PartsExtractionTest.cs @@ -1,4 +1,4 @@ -// Copyright (C) 2016-2021 Xtensive LLC. +// Copyright (C) 2016-2022 Xtensive LLC. // This code is distributed under MIT license terms. // See the License.txt file in the project root for more information. // Created by: Alex Groznov @@ -188,5 +188,14 @@ public void ExtractDayOfWeekTest() RunWrongTest(c => c.NullableDateTime.Value.DayOfWeek == WrongDateTime.DayOfWeek); }); } + + [Test] + public void ExtractTimeOfDayTicksTest() + { + ExecuteInsideSession(() => { + RunTest(c => c.DateTime.TimeOfDay.Ticks == FirstDateTime.TimeOfDay.Ticks); + RunWrongTest(c => c.DateTime.TimeOfDay.Ticks < FirstDateTime.TimeOfDay.Ticks); + }); + } } } diff --git a/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTimeOffset/PartsExtractionTest.cs b/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTimeOffset/PartsExtractionTest.cs index 0f5fd94711..3e4ff04bc7 100644 --- a/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTimeOffset/PartsExtractionTest.cs +++ b/Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTimeOffset/PartsExtractionTest.cs @@ -1,4 +1,4 @@ -// Copyright (C) 2016-2021 Xtensive LLC. +// Copyright (C) 2016-2022 Xtensive LLC. // This code is distributed under MIT license terms. // See the License.txt file in the project root for more information. // Created by: Alex Groznov @@ -189,6 +189,18 @@ public void ExtractTimeOfDayWithMillisecondsTest() }); } + [Test] + public void ExtractTimeOfDayTicksTest() + { + ExecuteInsideSession(() => { + var firstDateTimeOffset = TryMoveToLocalTimeZone(FirstDateTimeOffset); + RunTest(c => c.DateTimeOffset.TimeOfDay.Ticks == firstDateTimeOffset.TimeOfDay.Ticks); + + var wrongDateTimeOffset = TryMoveToLocalTimeZone(WrongDateTimeOffset); + RunWrongTest(c => c.DateTimeOffset.TimeOfDay.Ticks == wrongDateTimeOffset.TimeOfDay.Ticks); + }); + } + [Test] public void ExtractTimeOfDayOfNullableValueTest() {