Skip to content

Commit 6ad6085

Browse files
authored
Fix DateTimeOffset Now and UtcNow (#235)
* Fix DateTimeOffset Now and UtcNow
1 parent d8d4744 commit 6ad6085

File tree

10 files changed

+87
-35
lines changed

10 files changed

+87
-35
lines changed

src/EFCore.Jet.Data/JetDataReader.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ public virtual DateTimeOffset GetDateTimeOffset(int ordinal)
217217
{
218218
return DateTimeOffset.Parse(stringValue, null, DateTimeStyles.RoundtripKind);
219219
}
220+
else if (value is DateTime dateTimeValue && dateTimeValue == JetConfiguration.TimeSpanOffset)
221+
{
222+
return default;
223+
}
220224
else if (value is DateTime dateTime)
221225
{
222226
return new DateTimeOffset(dateTime, TimeSpan.Zero);

src/EFCore.Jet/Query/ExpressionTranslators/Internal/JetDateTimeMemberTranslator.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
using System;
44
using System.Collections.Generic;
5+
using System.Linq.Expressions;
56
using System.Reflection;
67
using Microsoft.EntityFrameworkCore;
78
using Microsoft.EntityFrameworkCore.Diagnostics;
@@ -77,8 +78,18 @@ public JetDateTimeMemberTranslator(
7778
{
7879
nameof(DateTime.Now) => _sqlExpressionFactory.Function("NOW", Array.Empty<SqlExpression>(),
7980
false, new[] { false }, returnType),
80-
nameof(DateTime.UtcNow) => _sqlExpressionFactory.Function("NOW", Array.Empty<SqlExpression>(),
81-
false, new[] { false }, returnType),
81+
nameof(DateTime.UtcNow) => _sqlExpressionFactory.Function(
82+
"DATEADD",
83+
new SqlExpression[]
84+
{
85+
new SqlConstantExpression(Expression.Constant("n"), null),
86+
new SqlConstantExpression(Expression.Constant(-1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes), null) ,
87+
_sqlExpressionFactory.Function("NOW", Array.Empty<SqlExpression>(),
88+
false, new[] { false }, returnType)
89+
},
90+
true,
91+
argumentsPropagateNullability: new[] { false, false, true },
92+
returnType),
8293
nameof(DateTime.Today) => _sqlExpressionFactory.Function(
8394
"DATEVALUE",
8495
new[]

src/EFCore.Jet/Storage/Internal/JetDateTimeOffsetTypeMapping.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ protected override void ConfigureParameter(DbParameter parameter)
3737
// OLE DB can't handle the DateTimeOffset type.
3838
if (parameter.Value is DateTimeOffset dateTimeOffset)
3939
{
40-
parameter.Value = dateTimeOffset.UtcDateTime;
40+
parameter.Value = dateTimeOffset.Ticks == 0 ? DateTime.FromOADate(0) : dateTimeOffset.UtcDateTime;
4141
parameter.DbType = System.Data.DbType.DateTime;
4242
}
4343

@@ -50,7 +50,7 @@ protected override string SqlLiteralFormatString
5050
protected override string GenerateNonNullSqlLiteral(object value)
5151
{
5252
if (value is not DateTimeOffset offset) return base.GenerateNonNullSqlLiteral(value);
53-
var dateTime = offset.UtcDateTime;
53+
var dateTime = offset.Ticks == 0 ? DateTime.FromOADate(0) : offset.UtcDateTime;
5454
return $"CDATE({string.Format(CultureInfo.InvariantCulture, DateTimeFormatConst, dateTime)})";
5555
}
5656
}

test/EFCore.Jet.FunctionalTests/BuiltInDataTypesJetTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4902,7 +4902,7 @@ private void QueryBuiltInDataTypesTest<TEntity>(EntityEntry<TEntity> source)
49024902

49034903
if (entityType.FindProperty(nameof(BuiltInDataTypes.TestDateTimeOffset)) != null)
49044904
{
4905-
var param7 = new DateTimeOffset(new DateTime(), TimeSpan.FromHours(-8.0));
4905+
var param7 = new DateTimeOffset(new DateTime(), TimeSpan.FromHours(0.0));
49064906
Assert.Same(
49074907
entity,
49084908
set.Where(e => e.Id == 11 && EF.Property<DateTimeOffset>(e, nameof(BuiltInDataTypes.TestDateTimeOffset)) == param7)

test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_insert_query
5454
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_perform_query_with_ansi_strings_test
5555
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_perform_query_with_max_length
5656
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_query_using_any_mapped_data_types_with_nulls
57+
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_query_using_any_nullable_data_type_as_literal
5758
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_query_using_DateDiffHour_using_TimeSpan
5859
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_query_using_DateDiffMinute_using_TimeSpan
5960
EntityFrameworkCore.Jet.FunctionalTests.BuiltInDataTypesJetTest.Can_query_using_DateDiffSecond_using_TimeSpan
@@ -14470,6 +14471,10 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_d
1447014471
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetime_utcnow(isAsync: True)
1447114472
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetime_year_component(isAsync: False)
1447214473
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetime_year_component(isAsync: True)
14474+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_now_component(isAsync: False)
14475+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_now_component(isAsync: True)
14476+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_utcnow_component(isAsync: False)
14477+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_utcnow_component(isAsync: True)
1447314478
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_de_morgan_and_optimized(isAsync: False)
1447414479
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_de_morgan_and_optimized(isAsync: True)
1447514480
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_de_morgan_or_optimized(isAsync: False)

test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11072,8 +11072,12 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datet
1107211072
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(isAsync: True)
1107311073
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_month_component(isAsync: False)
1107411074
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_month_component(isAsync: True)
11075+
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_now(isAsync: False)
11076+
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_now(isAsync: True)
1107511077
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_second_component(isAsync: False)
1107611078
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_second_component(isAsync: True)
11079+
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_utcnow(isAsync: False)
11080+
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_utcnow(isAsync: True)
1107711081
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_year_component(isAsync: False)
1107811082
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_year_component(isAsync: True)
1107911083
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(isAsync: False)
@@ -15664,6 +15668,12 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_d
1566415668
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetime_utcnow(isAsync: True)
1566515669
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetime_year_component(isAsync: False)
1566615670
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetime_year_component(isAsync: True)
15671+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_now_component(isAsync: False)
15672+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_now_component(isAsync: True)
15673+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_utcnow_component(isAsync: False)
15674+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_utcnow_component(isAsync: True)
15675+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_utcnow(async: False)
15676+
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_datetimeoffset_utcnow(async: True)
1566715677
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_de_morgan_and_optimized(isAsync: False)
1566815678
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_de_morgan_and_optimized(isAsync: True)
1566915679
EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindWhereQueryJetTest.Where_de_morgan_or_optimized(isAsync: False)
@@ -17972,8 +17982,12 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_da
1797217982
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(async: True)
1797317983
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: False)
1797417984
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: True)
17985+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_now(async: False)
17986+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_now(async: True)
1797517987
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: False)
1797617988
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: True)
17989+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_utcnow(async: False)
17990+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_utcnow(async: True)
1797717991
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_year_component(async: False)
1797817992
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_year_component(async: True)
1797917993
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(async: False)
@@ -19771,8 +19785,12 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_da
1977119785
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(async: True)
1977219786
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: False)
1977319787
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: True)
19788+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_now(async: False)
19789+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_now(async: True)
1977419790
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: False)
1977519791
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: True)
19792+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_utcnow(async: False)
19793+
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_utcnow(async: True)
1977619794
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_year_component(async: False)
1977719795
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_year_component(async: True)
1977819796
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(async: False)

test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetTest.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2526,19 +2526,24 @@ public override async Task Where_datetimeoffset_now(bool isAsync)
25262526
await base.Where_datetimeoffset_now(isAsync);
25272527

25282528
AssertSql(
2529-
$@"SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Rating`, `m`.`Timeline`
2529+
"""
2530+
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
25302531
FROM `Missions` AS `m`
2531-
WHERE (`m`.`Timeline` <> SYSDATETIMEOFFSET()) OR SYSDATETIMEOFFSET() IS NULL");
2532+
WHERE `m`.`Timeline` <> NOW()
2533+
""");
25322534
}
25332535

25342536
public override async Task Where_datetimeoffset_utcnow(bool isAsync)
25352537
{
2538+
var dtoffset = -1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
25362539
await base.Where_datetimeoffset_utcnow(isAsync);
25372540

25382541
AssertSql(
2539-
$@"SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Rating`, `m`.`Timeline`
2542+
$"""
2543+
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
25402544
FROM `Missions` AS `m`
2541-
WHERE (`m`.`Timeline` <> CAST(SYSUTCDATETIME() AS datetimeoffset)) OR SYSUTCDATETIME() IS NULL");
2545+
WHERE `m`.`Timeline` <> DATEADD('n', {dtoffset}.0, NOW())
2546+
""");
25422547
}
25432548

25442549
public override async Task Where_datetimeoffset_date_component(bool isAsync)

test/EFCore.Jet.FunctionalTests/Query/NorthwindWhereQueryJetTest.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,7 @@ WHERE NOW() <> CDATE({AssertSqlHelper.Parameter("@__myDatetime_0")})
787787

788788
public override async Task Where_datetime_utcnow(bool isAsync)
789789
{
790+
var dtoffset = -1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
790791
await base.Where_datetime_utcnow(isAsync);
791792

792793
AssertSql(
@@ -795,21 +796,22 @@ public override async Task Where_datetime_utcnow(bool isAsync)
795796
796797
SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`
797798
FROM `Customers` AS `c`
798-
WHERE NOW() <> CDATE({AssertSqlHelper.Parameter("@__myDatetime_0")})
799+
WHERE DATEADD('n', {dtoffset}.0, NOW()) <> CDATE({AssertSqlHelper.Parameter("@__myDatetime_0")})
799800
""");
800801
}
801802

802803
public override async Task Where_datetimeoffset_utcnow(bool async)
803804
{
805+
var dtoffset = -1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
804806
await base.Where_datetimeoffset_utcnow(async);
805807

806808
AssertSql(
807-
"""
808-
@__myDatetimeOffset_0='2015-04-10T00:00:00.0000000-08:00'
809+
$"""
810+
@__myDatetimeOffset_0='2015-04-10T08:00:00.0000000Z' (DbType = DateTime)
809811
810-
SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
811-
FROM [Customers] AS [c]
812-
WHERE CAST(SYSUTCDATETIME() AS datetimeoffset) <> @__myDatetimeOffset_0
812+
SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`
813+
FROM `Customers` AS `c`
814+
WHERE DATEADD('n', {dtoffset}.0, NOW()) <> @__myDatetimeOffset_0
813815
""");
814816
}
815817

@@ -935,19 +937,24 @@ public override async Task Where_datetimeoffset_now_component(bool isAsync)
935937
await base.Where_datetimeoffset_now_component(isAsync);
936938

937939
AssertSql(
938-
$@"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate`
940+
"""
941+
SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate`
939942
FROM `Orders` AS `o`
940-
WHERE `o`.`OrderDate` = SYSDATETIMEOFFSET()");
943+
WHERE `o`.`OrderDate` < NOW()
944+
""");
941945
}
942946

943947
public override async Task Where_datetimeoffset_utcnow_component(bool isAsync)
944948
{
949+
var dtoffset = -1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
945950
await base.Where_datetimeoffset_utcnow_component(isAsync);
946951

947952
AssertSql(
948-
$@"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate`
953+
$"""
954+
SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate`
949955
FROM `Orders` AS `o`
950-
WHERE `o`.`OrderDate` = CAST(SYSUTCDATETIME() AS datetimeoffset)");
956+
WHERE `o`.`OrderDate` <> DATEADD('n', {dtoffset}.0, NOW()) OR `o`.`OrderDate` IS NULL
957+
""");
951958
}
952959

953960
public override async Task Where_simple_reversed(bool isAsync)

test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetTest.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3691,22 +3691,23 @@ public override async Task Where_datetimeoffset_now(bool async)
36913691
await base.Where_datetimeoffset_now(async);
36923692

36933693
AssertSql(
3694-
"""
3695-
SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
3696-
FROM [Missions] AS [m]
3697-
WHERE [m].[Timeline] <> SYSDATETIMEOFFSET()
3694+
"""
3695+
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
3696+
FROM `Missions` AS `m`
3697+
WHERE `m`.`Timeline` <> NOW()
36983698
""");
36993699
}
37003700

37013701
public override async Task Where_datetimeoffset_utcnow(bool async)
37023702
{
3703+
var dtoffset = -1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
37033704
await base.Where_datetimeoffset_utcnow(async);
37043705

37053706
AssertSql(
3706-
"""
3707-
SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
3708-
FROM [Missions] AS [m]
3709-
WHERE [m].[Timeline] <> CAST(SYSUTCDATETIME() AS datetimeoffset)
3707+
$"""
3708+
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
3709+
FROM `Missions` AS `m`
3710+
WHERE `m`.`Timeline` <> DATEADD('n', {dtoffset}.0, NOW())
37103711
""");
37113712
}
37123713

test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetTest.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2942,22 +2942,23 @@ public override async Task Where_datetimeoffset_now(bool async)
29422942
await base.Where_datetimeoffset_now(async);
29432943

29442944
AssertSql(
2945-
"""
2946-
SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
2947-
FROM [Missions] AS [m]
2948-
WHERE [m].[Timeline] <> SYSDATETIMEOFFSET()
2945+
"""
2946+
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
2947+
FROM `Missions` AS `m`
2948+
WHERE `m`.`Timeline` <> NOW()
29492949
""");
29502950
}
29512951

29522952
public override async Task Where_datetimeoffset_utcnow(bool async)
29532953
{
2954+
var dtoffset = -1 * TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
29542955
await base.Where_datetimeoffset_utcnow(async);
29552956

29562957
AssertSql(
2957-
"""
2958-
SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
2959-
FROM [Missions] AS [m]
2960-
WHERE [m].[Timeline] <> CAST(SYSUTCDATETIME() AS datetimeoffset)
2958+
$"""
2959+
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
2960+
FROM `Missions` AS `m`
2961+
WHERE `m`.`Timeline` <> DATEADD('n', {dtoffset}.0, NOW())
29612962
""");
29622963
}
29632964

0 commit comments

Comments
 (0)