Postgresql错误:字符串未被识别为有效的日期时间

时间:2011-03-11 10:08:03

标签: c# postgresql

当我尝试从C#从postgresql检索日期字段时,我收到此错误。与select datefield from table中一样。

运行postgesql的系统位于IST时区。我无法编辑数据库或部署它的系统上的任何设置。我可以在代码中做些什么来防止此问题?

更新:客户端在MST时区。忘记提及。

UPDTATE2:附加代码

DbDataAdapter myAdapter = dbFactory.NewDataAdapter(sSQL, myConnection);
if (myConnection.State != ConnectionState.Open)
       myConnection.Open();   
ds = new DataSet();
myAdapter.Fill(ds, dataTableName);

2 个答案:

答案 0 :(得分:3)

您确定在DbDataAdapter使用了有效的方言吗?您的工厂返回什么类型?意思是myAdapter.GetType()返回什么?

PostgreSQL处理的min / maxvalues与大多数DB略有不同,可能会将日期返回为:

  • '-infinity'对应DateTime.MinValue
  • {li> 'infinity' DateTime.MaxValue

除非你的适配器处理,我猜你可能会遇到类似的错误。

我猜你应该使用Npgsql-provider中的NpgsqlDataAdapter,但是你没有在某处提到它。

编辑:发现存在已知错误:http://pgfoundry.org/forum/message.php?msg_id=1005522,但未发现此影响的版本。它与半小时时区(例如+3:30)有关。我想这也是在2.0.8中修复的。

http://pgfoundry.org/frs/shownotes.php?release_id=1686某些timestampTZ修复程序也出现在2.0.10

答案 1 :(得分:1)

尝试将其作为字符串读取,然后将其解析为C#中的日期。

像:

String date = GetFromDb();
DateTime realDate = DateTime.Parse(date);

看看是否有效,可能只是格式错误。

但是,如果这没有帮助,请您发布您的代码。

谢谢, 亚历克斯。