我有一个TableAdapter
填充一个DataSet
,出于某种原因,每个select查询都会为我的timestamp列填充每个选定行的值1/1/2000。
我首先验证了数据库端的原始值是完整的;大多数都是,尽管有几行由于在发现问题之前以编程方式执行的更新查询而丢失了它们的原始值。DataColumn.DataType
是DateType
,而PgSQL数据库列类型是timestamp
。我最近注意到绑定DataGridView
控件中的问题,并通过使用Visual Studio数据集编辑器中的Preview data选项确认这与我的数据绑定无关。
在检查了属性和类型,甚至从头重新创建了TableAdapter
之后,我非常困惑。如何解决问题和/或诊断原因?
最佳答案
框架(例如DataTable
属性)不知道表字段的源类型;只有一个数据类型属性指示它希望将字段值转换为什么。
框架希望转换为DateTime
的日期类型,因此需要在查询中转换时间戳值(例如,选择timestamp::date FROM table),否则转换将失败,给出的值为1/1/2000。