【问题标题】:Exception when comparing dates - Npgsql.PostgresException: '42883'比较日期时出现异常 - Npgsql.PostgresException: '42883'
【发布时间】:2021-10-06 08:44:38
【问题描述】:

我正在尝试获取日期与给定日期相同或晚于给定日期的记录。但是这个异常一直在发生:

Npgsql.PostgresException: '42883: 运算符不存在:字符变化 >= 没有时区的时间戳'

这是我的代码:

var bairro = "test";
var dataBusca = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");

var buscaImovel = _context.ImovelModel
         .Where(context => context.bairronome == bairro &&
         context.datageracaoarq >= DateTime.Parse(dataBusca)).ToList(); //exception happens here

我数据库中的日期使用的是“yyyy-MM-dd”时间戳。可能是什么问题?

【问题讨论】:

  • 错误非常具体:operator does not exist:character varying >= timestamp without time zone'。所以我要说数据库中的字段是varchar 而不是timestamp。如果是这样,将时间戳保存在字符字段中不是一个好主意。您的选择:1)更改为 timestamp 类型 2)在查询中将 varchar 转换为 timestamp
  • @AdrianKlaver 是的,数据库中的字段是 varchar。但是,如果我尝试在查询中转换它,则会发生这种情况:“System.InvalidOperationException:'LINQ 表达式......无法翻译。”所以我认为查询是正确的,问题可能是其他问题..

标签: c# asp.net postgresql linq


【解决方案1】:

如果我在其中将字段转换为 DateTime,则 LINQ 无法翻译表达式。解决方案是将数据库中的字段类型更改为“日期”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2018-11-29
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多