c# - PostgreSQL:42883 运算符不存在:没有时区的时间戳 = 文本

标签 c# postgresql npgsql petapoco

我使用的是 Npgsql 3.0.3.0 和 PetaPoco 最新版本。

当我运行这个命令时:

var dateCreated = DateTime.Now; // just an example
var sql = new Sql("WHERE date_created = @0", dateCreated.ToString("yyyy-MM-dd HH:00:00"));
var category = db.SingleOrDefault<Category>(sql);

我收到以下错误:

Npgsql.NpgsqlException 42883: operator does not exist: timestamp without time zone = text

我理解错误消息是说我正在尝试将时间戳(日期)与文本进行比较,但是对我来说比较它们是完全有效的,因为我期望以下 SQL 语句 build :

SELECT * FROM category WHERE date_created = '2017-02-03 15:00:00'

出于性能原因,我真的不想将我的数据库列强制转换为文本。

最佳答案

您需要将值转换为 timestsamp:

var sql = new Sql("WHERE date_created = @0::timestamp", dateCreated.ToString("yyyy-MM-dd HH:00:00"));

关于c# - PostgreSQL:42883 运算符不存在:没有时区的时间戳 = 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033881/

相关文章:

PostgreSQL, bool 类型将值存储为 "T"和 "F"的问题破坏了 ORM

c# - 使用 Npgsql 和 C# 选择查询没有结果

c# 泛型无法将源类型转换为目标类型

java - 序列 "testsequence"尚未在此 session 中的 postgresql java 中定义

c# - C# 中用户定义的编译时类型约束

sql - 仅选择表中每个标识符的最新值

postgresql - 多对多表 - 性能很差

c# - 多行插入的 IDBCommand 参数

C# 将 Foreach 值转换为其属性之一

c# - 在 ASP.NET MVC 网站中使用 UmbracoMembershipProvider