Csharp/C#教程:PostgreSQL:42883运算符不存在:没有时区的时间戳=文本分享


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

我使用的是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(sql); 

我收到以下错误:

Npgsql.NpgsqlException 42883:运算符不存在:没有时区的时间戳=文本

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

 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")); 

正如@ roman-tkachuk回答的那样,您可以告诉PostgreSQL将您的字符串转换为时间戳。

或者更好的是,您可以直接向PostgreSQL发送时间戳,而不是发送时间戳的字符串表示并进行转换。 要做到这一点,只需直接发送dateCreated ,而不使用ToString()

上述就是C#学习教程:PostgreSQL:42883运算符不存在:没有时区的时间戳=文本分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/958677.html

(0)
上一篇 2021年11月22日
下一篇 2021年11月22日

精彩推荐