在DBeaver导入CSV时,日期格式需在导入向导的「列映射」步骤中逐列设置:点击目标列旁铅笔图标,输入Java SimpleDateFormat格式(如yyyy-MM-dd HH:mm:ss),不支持自动识别或多格式混用,必须显式配置且不保存复用。

导入向导里哪里改日期格式
在 DBeaver 导入 CSV 时,日期格式不是在建表或连接设置里配的,而是在导入向导的「列映射」步骤中单独指定。点到这一步后,你会看到每列的目标类型(比如 TIMESTAMP 或 DATE),右侧有「编辑」按钮(铅笔图标)——点它,才能打开日期格式输入框。
常见错误是跳过这步,直接点「下一步」,结果所有日期全变成 1970-01-01 或报错 Cannot parse date。DBeaver 不会自动猜格式,哪怕你的源数据是 2025/03/18 这种常见写法,也必须显式填 yyyy/MM/dd。
- 格式字符串用 Java
SimpleDateFormat语法,yyyy是 4 位年,yy是 2 位;MM是月(不是mm,那是分钟) - 如果源数据带时间,比如
2025-03-18 14:22:05,目标列类型得是TIMESTAMP,格式填yyyy-MM-dd HH:mm:ss - 空值或非法值默认转成
NULL,但若目标列设了NOT NULL,导入会中断
多种日期格式混在一起怎么办
CSV 里一列同时出现 2025-03-18、18/03/2025、Mar 18, 2025 ——DBeaver 的单格式配置无法覆盖。这时候别硬扛,导入前必须清洗。
推荐用 Python 脚本统一归一化(几行就能搞定),而不是依赖 DBeaver 的「自动识别」。它的 CSV 导入器(DataImporterCSV.java)只支持单格式解析,多格式会批量失败。
- 用
pandas.to_datetime(..., infer_datetime_format=False)+.dt.strftime()强制转成YYYY-MM-DD - Excel 用户可先用「数据 → 分列 → 日期格式」手动转,再另存为 CSV UTF-8
- 千万别选「自动检测格式」复选框——它基本不可靠,尤其对中文环境下的日/月顺序
时区和毫秒精度怎么处理
目标列是 TIMESTAMP WITH TIME ZONE,但 CSV 里只有 2025-03-18 14:22:05(无时区)?DBeaver 默认按系统本地时区解释,可能造成 8 小时偏移。解决方法有两个:
- 在日期格式框里补上时区标识,比如填
yyyy-MM-dd HH:mm:ss.SSS Z,并确保源数据真有时区字段(否则会解析失败) - 更稳妥的做法:把目标列类型设为
TIMESTAMP WITHOUT TIME ZONE,入库后再用 SQL 转换,避免隐式时区转换污染 - 毫秒部分(如
2025-03-18 14:22:05.123)需在格式中显式加.SSS,少一个字符就整个字段变NULL
ClickHouse 或其他 OLAP 数据库的特殊注意点
往 ClickHouse 导入日期时,Date 类型只接受 YYYY-MM-DD,DateTime 类型才支持带时间。如果你填了 yyyy-MM-dd HH:mm:ss 但目标列是 Date,DBeaver 会静默截断时间部分,不报错但数据丢失。
另外,ClickHouse JDBC 驱动对日期格式敏感度更高——即使格式字符串完全匹配,若源数据某行多了一个空格(如 " 2025-03-18"),整批导入也会卡在那个位置不动,错误日志藏在 plugins/org.jkiss.dbeaver.data.transfer/ 的 debug 输出里,不容易发现。
真正容易被忽略的是:日期格式配置只作用于当前导入任务,下次再导另一个 CSV,哪怕表结构一样,也得重新填一遍——它不保存到连接或表元数据里。











