DBeaver结果集时间显示为00:00:00是因默认启用日期简化格式,非数据错误;需在“窗口→首选项→编辑器→结果集→数据格式”中勾选“使用原始日期/时间格式”并应用,导出Excel时还需在导出向导中单独设置日期时间格式为yyyy-MM-dd HH:mm:ss并配置时区处理。

结果集里时间全变成 00:00:00,是显示设置没开
这不是数据库存错了,也不是 SQL 写得不对,纯粹是 DBeaver 默认把 datetime、timestamp 类型“美化”成只显示日期。它用的是简化格式,时分秒强制归零,看着像 2026-11-04 00:00:00,但实际查出来的值是有时间部分的。
解决方法非常直接:
- 打开 窗口 → 首选项
- 进入 编辑器 → 结果集 → 数据格式
- 勾选
使用原始日期/时间格式 - 点
应用,再重新执行一次查询
这个开关一开,2026-11-04 15:23:47 就会原样显示,不会被截断或归零。
导出 Excel 时日期又变回 00:00:00,得单独配导出规则
即使结果集里显示正常了,导出到 .xlsx 时仍可能丢掉时间——因为导出流程不继承“结果集显示格式”,它走的是另一套数据序列化逻辑。
导出前必须手动指定时间列行为:
- 右键结果集 →
导出数据→ 格式选Excel (.xlsx) - 在“导出向导”的第二步(参数页),找到
日期时间格式设置项 - 把它从默认的空值或
yyyy-MM-dd改成带时间的格式,例如:yyyy-MM-dd HH:mm:ss - 如果目标列是
timestamp with time zone,还要确认时区处理是否设为“使用会话时区”
漏掉这一步,Excel 里日期列大概率还是 2026-11-04 00:00:00,哪怕源数据明明有时间。
用 CSV 中转时日期错乱,根本原因是字段类型推断失效
导出 CSV 后用 Excel 打开,发现日期列变成数字(比如 44892)或者全挤在一列里,问题不在 DBeaver 导出本身,而在 Excel 导入阶段的自动识别失败。
关键要打破 Excel 的“猜类型”机制:
- 导出时编码必须选
UTF-8 with BOM,否则中文表头都打不开 - 分隔符改用
\t(制表符),比逗号更安全,避免文本中含逗号导致列偏移 - 务必勾选
使用文本限定符,字符选",防止字段含换行或制表符时解析崩溃 - 导入 Excel 时,不能双击打开 CSV 文件,必须走 数据 → 从文本/CSV → 导入向导,并在第二步手动将对应列设为“日期”类型,格式选
YYYY-MM-DD HH:MM:SS
跳过向导直接双击,Excel 就会按前 8 行采样结果瞎猜类型,日期列首行如果是空或文本,整列就被判成文本,后面再怎么调都救不回来。
导入 Excel 到数据库时日期变数字,不是 DBeaver 的锅
反过来,从 Excel 导入数据时,2026-11-04 15:23:47 变成 44892.6415 这种数字,说明 Apache POI 驱动把 Excel 的日期序列值直接读出来了,没结合单元格格式做转换。
修复动作集中在导入配置页:
- 导入向导中,进到“映射”步骤前,先点
设置→ 勾选使用原生数据类型 - 在“映射”页,对目标列为
datetime或timestamp的字段,手动点击该行 → 在右侧“数据类型”下拉中选Timestamp(不要依赖自动识别) - 如果 Excel 里日期列格式不统一(有的带时间、有的只有日期),建议先导出为 CSV,用文本编辑器统一补全时间部分,再导入
这个环节最容易被忽略:DBeaver 不会主动读 Excel 单元格的显示格式,它只认底层存储值。显示为“2026-11-04”的单元格,底层可能是数值 44892,也可能是字符串,必须人工干预类型绑定。


















