.net 使用ODBC的PostgreSQL中奇怪的“在'201112100000'处或附近出现语法错误”

.net 使用ODBC的PostgreSQL中奇怪的“在'201112100000'处或附近出现语法错误”,.net,sql,postgresql,odbc,.net,Sql,Postgresql,Odbc,我正在运行此查询 select * from measTbl where dateone>'201112100000' and dateone<'202001010000' and netcd<>99 我使用的.net代码如下 OdbcConnection conn = new OdbcConnection(); conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionS

我正在运行此查询

select * from measTbl  where dateone>'201112100000' and dateone<'202001010000' and netcd<>99 
我使用的.net代码如下

OdbcConnection conn = new OdbcConnection();
conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CSPOSTGRES"].ToString(); ;
OdbcCommand comm = new OdbcCommand();
comm.Connection = conn;
conn.Open();
var strData= System.DateTime.Today.AddDays(-(double)giorni).ToString("yyyyMMdd")+"0000";
var commandText=String.Format ("select * from measTbl  where dateone  >'{0}' and dateone<'202001010000' and netcd<>99", strData);
comm.CommandText = strData;

OdbcDataReader reader = comm.ExecuteReader();
最奇怪的是,如果我使用带有64位驱动程序的winforms 64位应用程序,同样的查询也能完美工作

我必须在生产中使用32位,所以不能使用64位

有什么想法吗? 谢谢。

您正在将strData分配给CommandText属性,这是第一个问题

var commandText=String.Format ("select * from measTbl  where dateone  >'{0}' and dateone<'202001010000' and netcd<>99",
                    strData);
comm.CommandText = commandText;

我不确定参数符号@是什么?或:与PSQL和ODBC一起使用。

dateone的字段类型是什么?请发布示例代码。dateone是一个包含日期的varchar。vs2010中的数据库资源管理器告诉我varchar,我不知道这是否是PostgreSQL中变量char类型的正确名称。使用类似“201112100000”的名称作为对真实日期列的比较不是一个好主意。您应该使用日期“2011-12-10”或to_DATE“20111210”或“yyyyMMdd”。使用命令行界面执行此查询时,您是否收到相同的消息?
var commandText=String.Format ("select * from measTbl  where dateone  >'{0}' and dateone<'202001010000' and netcd<>99",
                    strData);
comm.CommandText = commandText;
cmd.CommandText="select * from measTbl where (dateone>@date1 and dateone<@date2) 
                        and netcd<>@netcd";