使用以下方法将 tstzrange 传递给 EF Core 中的 postgres
DateTime algus = DateTime.Parse("2024-11-25T00:00:00+02:00", CultureInfo.InvariantCulture).ToUniversalTime();
DateTime lopp = DateTime.Parse("2025-01-25T22:00:00+02:00", CultureInfo.InvariantCulture).ToUniversalTime();
await ctx.Database.SqlQuery<DateTime>($@"
select lower(tstzrange '[{algus},{lopp})') as ""Value""
").ToArrayAsync();
抛出错误
invalid input syntax for type timestamp with time zone: "@p0" at character 20
STATEMENT: select tstzrange '[@p0,@p1)'
如何将 tstzrange 传递给 Postgres?
代码位于 ASP.NET 9 MVC 控制器中
应用程序使用 Postgres 12 及更高版本的服务器以及最新的 Npgsql Entity Framework Core Provider
作为
PostgreSQL
文档,tstzrange
是一种内置范围类型https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-BUILTIN对于
Npgsql
,范围类型被映射到,NpgsqlRange<TElement>
因为没有通用的 C# 类可以保存其值。https ://www.npgsql.org/doc/types/basic.html以下是解析和选择的示例
tstzrange
: