Skip to content

Commit e672715

Browse files
authored
General infinity literals for DateTimeOffset min/max values (#2390)
Fixes #2389
1 parent a750b91 commit e672715

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

src/EFCore.PG/Storage/Internal/Mapping/NpgsqlTimestampTzTypeMapping.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,19 @@ private string GenerateLiteralCore(object value)
5858
};
5959
6060
case DateTimeOffset dateTimeOffset:
61+
if (!NpgsqlTypeMappingSource.DisableDateTimeInfinityConversions)
62+
{
63+
if (dateTimeOffset == DateTimeOffset.MinValue)
64+
{
65+
return "-infinity";
66+
}
67+
68+
if (dateTimeOffset == DateTimeOffset.MaxValue)
69+
{
70+
return "infinity";
71+
}
72+
}
73+
6174
return dateTimeOffset.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFzzz", CultureInfo.InvariantCulture);
6275
6376
default:

test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,14 @@ public void GenerateSqlLiteral_returns_timestamptz_infinity_literals()
125125
Assert.Equal(
126126
"TIMESTAMPTZ 'infinity'",
127127
GetMapping("timestamptz").GenerateSqlLiteral(DateTime.MaxValue));
128+
129+
Assert.Equal(
130+
"TIMESTAMPTZ '-infinity'",
131+
GetMapping("timestamptz").GenerateSqlLiteral(DateTimeOffset.MinValue));
132+
133+
Assert.Equal(
134+
"TIMESTAMPTZ 'infinity'",
135+
GetMapping("timestamptz").GenerateSqlLiteral(DateTimeOffset.MaxValue));
128136
}
129137

130138
[Fact]

0 commit comments

Comments
 (0)