当我尝试从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);
答案 0 :(得分:3)
您确定在DbDataAdapter
使用了有效的方言吗?您的工厂返回什么类型?意思是myAdapter.GetType()
返回什么?
PostgreSQL处理的min / maxvalues与大多数DB略有不同,可能会将日期返回为:
'-infinity'
对应DateTime.MinValue
'infinity'
DateTime.MaxValue
除非你的适配器处理,我猜你可能会遇到类似的错误。
我猜你应该使用Npgsql-provider中的NpgsqlDataAdapter
,但是你没有在某处提到它。
http://pgfoundry.org/frs/shownotes.php?release_id=1686某些timestampTZ修复程序也出现在2.0.10
中答案 1 :(得分:1)
尝试将其作为字符串读取,然后将其解析为C#中的日期。
像:
String date = GetFromDb();
DateTime realDate = DateTime.Parse(date);
看看是否有效,可能只是格式错误。
但是,如果这没有帮助,请您发布您的代码。
谢谢, 亚历克斯。