【问题标题】:pyodbc returns extra decimal places for MS Access Double/Single fieldspyodbc 为 MS Access 双/单字段返回额外的小数位
【发布时间】:2021-03-11 14:13:40
【问题描述】:

当我使用 pyodbc 从我的 access 数据库中获取数据时,它会返回浮点、日期或整数的错误格式。

例如:

这些值

这样返回

我已经找了很久了,我认为是来自使用的ODBC驱动,但真的,我不知道。

另一个例子是我的 MS Access DB 中的日期类型为“21/01/2021”的日期,它将以中文或韩文格式 YYYY-mm-dd H:m:s 作为日期时间返回。

【问题讨论】:

  • 对于浮点列:在Access中打开数据库,在设计视图中打开表,查看字段的属性。 “格式”和/或“小数位数”属性是否与 here 所示的默认值不同?
  • 日期/时间列见this answer。
  • 您好,感谢您的回答,是的,它与您的屏幕不同,它设置为“格式:固定”和“小数:2”或 4 遵循所需的格式

标签: ms-access floating-point format pyodbc


【解决方案1】:

如果表中的字段定义使用默认格式选项,浮点列(Numeric(Double) 和 Numeric(Single))将在 Access UI 中显示所有小数位

格式:(空)
小数位:自动

将这些设置更改为

格式:固定
小数位数:2

将更改 Access UI 中的显示格式,但数字本身仍将以其完整精度存储。 ODBC 驱动程序不关注这些格式属性,因此它返回所有可用小数位的值。

对于日期/时间值,Access UI 中的默认格式是在时间组件正好是午夜时仅显示日期。但是,日期/时间值与该时间组件 (00:00:00) 一起存储,并且 ODBC 驱动程序再次返回完整值。更详细的解释见this answer。

【讨论】:

  • 表级设置将立即生效,以便直接在数据表视图中打开表。但是,现有表单或报表可能在创建这些表单和报表时继承了表格中的这些属性,因此可能需要更新以反映新设置。
  • 多亏了你,我弄明白了,看来和这个数据库交互的源软件确实是在表格中写入了错误的浮点格式。非常感谢 !现在我可以继续解决这个问题了!
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多