使用pyodbc读取MS Access时间类型字段格式异常求助
解决pyodbc读取Access TIME字段返回带默认日期的datetime问题
问题说明
使用pyodbc读取Access数据库的TIME类型字段时,返回结果为datetime.datetime(1899, 12, 30, 12, 14, 29)这类包含默认基准日期的datetime对象,而非预期的HH:MM:SS格式字符串,但直接在Access中执行查询时显示正常。
原因
Access的TIME类型通过ODBC驱动连接时,会被映射为包含默认基准日期(1899-12-30)的datetime对象,这是ODBC对Access时间类型的标准处理逻辑。
解决方案
方案1:Python代码内格式化datetime对象
遍历查询结果时,对time字段调用字符串格式化方法提取时间部分:
cursor = conn.cursor() cursor.execute(query) for row in cursor.fetchall(): # 假设第二个字段为time_inserted formatted_time = row[1].strftime("%H:%M:%S") print(row[0], formatted_time)
方案2:SQL查询阶段直接格式化输出
利用Access内置的Format()函数,在查询时直接返回HH:MM:SS格式的字符串:
SELECT [F].float, Format([I].time_inserted, 'HH:MM:SS') AS time_inserted FROM [Float] AS F, Insersion AS I WHERE F.floaterID = I.floaterID;
此方式下Python读取到的结果直接是目标格式的字符串,无需额外处理。
内容的提问来源于stack exchange,提问作者Clyde Simpson
相关产品推荐
相关产品推荐

