簡體   English   中英

PostgreSQL:42883運算符不存在:沒有時區的時間戳

[英]PostgreSQL: 42883 Operator does not exist: timestamp without time zone

我正在使用C#(Npgsql 3.2.4.1)和PostgreSQL(9.6.5)和pgAdmin 3。

我的表在PostgreSQL中:

create table Data
(                                        
   idref integer NOT NULL,
   val text,
   dt timestamp without time zone NOT NULL,
   constraint PK_Data_idRef_Dt primary key (idRef, Dt),   
   constraint FK_Data_Ref foreign key(idRef) references Ref(Id)                                    
);

當我運行函數(C#)時:

static void Main(string[] args)
    {
        var connString = "Server = 0.0.0.0; Port = 5432; Userid = user; Password = password; CommandTimeout=300; Timeout = 300; Database = database";
        using (var conn = new NpgsqlConnection(connString))
        {
            NpgsqlCommand cmd = new NpgsqlCommand(@"select Val, Dt from Data where idRef = @Id and Dt >= @Dt and Dt <= @Dt order by Dt asc;", conn);

            NpgsqlParameter parameterId = new NpgsqlParameter("Id", NpgsqlDbType.Integer);
            parameterId.Value = 4;
            cmd.Parameters.Add(parameterId);

            NpgsqlParameter parameterDtBegin = new NpgsqlParameter("DtBegin", NpgsqlDbType.Timestamp);
            parameterDtBegin.Value = new DateTime(2017, 9, 1, 0,0,0);
            cmd.Parameters.Add(parameterDtBegin);

            NpgsqlParameter parameterDtEnd = new NpgsqlParameter("DtEnd", NpgsqlDbType.Timestamp);
            parameterDtEnd.Value = new DateTime(2017, 10, 1, 0, 0, 0);
            cmd.Parameters.Add(parameterDtEnd);

            conn.Open();

            using (var reader = cmd.ExecuteReader())  
                  while (reader.Read())
                    Console.WriteLine(reader.GetString(0));
        }
        Console.ReadKey();
    }

我收到以下錯誤: {42883: operator does not exist: @ timestamp without time zone} System.Exception {Npgsql.PostgresException} 我看到了文章( 鏈接 ),但是這個想法對我沒有用。 謝謝您的回答!

它幫助了我:

NpgsqlCommand cmd = new NpgsqlCommand(@"select Val, Dt from Data where idRef = :id and Dt >= :date and Dt <= :date2 order by Dt asc;", conn);

cmd.Parameters.Add(":id", NpgsqlDbType.Integer).Value = 3;
cmd.Parameters.Add(":date", NpgsqlDbType.Timestamp).Value = new DateTime(2017, 9, 1, 0, 0, 0);
cmd.Parameters.Add(":date2", NpgsqlDbType.Timestamp).Value = new DateTime(2017, 10, 7, 0, 0, 0);

conn.Open();

using (var reader = cmd.ExecuteReader())
    while (reader.Read())
        Console.WriteLine(reader.GetString(0));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM