它解决什么问题
读进来的「2026-01-05」多数时候只是一串文本。文本状态下日期排序不对、算不了两个日期之间差几天、也没法按月份分组。这个节点把它变成 KNIME 认得的日期类型。
判断某列现在是不是日期类型:看列名旁边的图标。是日历图标就已经是日期,是「S」之类的文本标记就还没转。别靠肉眼看值的样子判断 – 文本和日期显示出来可能一模一样。
它在流程里的位置
要按日期区间筛选或按月分组,必须先转类型。文本状态下这两件事都做不对。
基本信息
| 英文原名 | String to Date&Time |
|---|---|
| 中文名称 | 文本转日期时间(iModel 中文界面) |
| 输入端口 | 1 个数据表 |
| 输出端口 | 1 个,行数不变 |
| 反向操作 | Date&Time to String,出报表时把日期格式化成指定样子 |
格式串怎么写
格式串必须和数据里的写法完全一致 – 分隔符、位数、顺序,一个不对就转不出来。
| 数据长这样 | 格式串写这个 | 说明 |
|---|---|---|
| 2026-01-05 | yyyy-MM-dd | 最标准的写法 |
| 2026/1/5 | yyyy/M/d | 月和日不补零,用单个字母 |
| 20260105 | yyyyMMdd | 没有分隔符 |
| 2026-01-05 14:30:00 | yyyy-MM-dd HH:mm:ss | 带时间,注意大小写 |
| 05/01/2026 | dd/MM/yyyy | 日在前,常见于导出的英文系统 |
大小写是有意义的,这是最常踩的一个坑。
MM 是月份,mm 是分钟。写成 yyyy-mm-dd 不会报错也不会转对 – 它会把月份当成分钟去解析。
dd 是几号,DD 是一年中的第几天。HH 是二十四小时制,hh 是十二小时制。
配置项逐条
-
要转换的列Column Selection
可以一次选多列,但它们必须是同一种格式 – 格式不同的列要分几个节点做。
-
目标类型Date / Time / Date&Time
只有年月日选 Date;只有时分秒选 Time;两样都有选 Date&Time。选得比数据里的信息多,转换会失败。
-
Date format格式串
按上面那张表写。下拉框里通常有常见格式可选,不必每次手打。
-
Locale区域设置
数据里出现英文月份名(Jan、March)或者中文「一月」时才需要动它。纯数字日期不用管。
-
转换失败时Fail / Insert missing
中止执行,还是把转不出来的置为空值继续跑。调试阶段选中止 – 它会告诉你是哪一行的什么值转不了。生产流程里若确知有少量脏值,再改成置空,但下游要加一步统计空值数量。
String to Date&Time 配置对话框
要转换的列
购置日期格式相同的列可以一次多选。
目标类型
DateTimeDate&Time
格式串Date format
yyyy-MM-dd
MM 是月,mm 是分钟。写错不报错,只是转不出来或者转错。转换失败时
中止执行置为空值继续
调试阶段选中止,它会指出哪一行的什么值转不了。
三个常见坑
- 一列里混着几种写法。人工填报的表里,「2026-01-05」「2026/1/5」「2026年1月5日」可能同时存在。一个格式串管不了三种。修法:先用 String Manipulation 统一成一种写法再转 – 把「年月日」替换成横线,把斜杠替换成横线。
- 中文日期转不出来。「2026年1月5日」不是标准格式。先替换掉中文字符变成
2026-1-5,再用yyyy-M-d转。 - Excel 里的日期读进来是五位数字。那是 Excel 内部的日期序号,不是文本,这个节点管不了。要用按 Excel 序号还原日期的方式处理,别在这里硬转。
什么时候该换别的节点
| 情况 | 换成 |
|---|---|
| 要把日期变回文本,按指定样子出报表 | Date&Time to String |
| 要算两个日期差几天 | Date&Time Difference,先都转成日期类型 |
| 要从日期里取出年、月、季度 | Extract Date&Time Fields |
| 一列里格式实在太杂 | 先用 String Manipulation 统一,再回来转 |

