{"record":{"id":"73eb01334bbe6915","repo":"apache/seatunnel","slug":"the-timestamp-column-type-time-is-out-of-ra","errorCode":null,"errorMessage":"The timestamp column {} type time({}) is out of range, which exceeds the maximum scale of {}, it will be converted to time({})","messagePattern":"The timestamp column (.+?) type time\\((.+?)\\) is out of range, which exceeds the maximum scale of (.+?), it will be converted to time\\((.+?)\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/snowflake/SnowflakeTypeConverter.java","lineNumber":313,"sourceCode":"                        builder.dataType(SNOWFLAKE_STRING);\n                    }\n                } else {\n                    builder.columnType(SNOWFLAKE_STRING);\n                    builder.dataType(SNOWFLAKE_STRING);\n                }\n                builder.length(column.getColumnLength());\n                break;\n            case DATE:\n                builder.columnType(SNOWFLAKE_DATE);\n                builder.dataType(SNOWFLAKE_DATE);\n                break;\n            case BYTES:\n                builder.columnType(SNOWFLAKE_GEOMETRY);\n                builder.dataType(SNOWFLAKE_GEOMETRY);\n                break;\n            case TIME:\n                if (column.getScale() != null && column.getScale() > 9) {\n                    log.warn(\n                            \"The timestamp column {} type time({}) is out of range, \"\n                                    + \"which exceeds the maximum scale of {}, \"\n                                    + \"it will be converted to time({})\",\n                            column.getName(),\n                            column.getScale(),\n                            9,\n                            9);\n                }\n                builder.columnType(SNOWFLAKE_TIME);\n                builder.dataType(SNOWFLAKE_TIME);\n                break;\n            case TIMESTAMP:\n                if (column.getScale() != null && column.getScale() > 9) {\n                    log.warn(\n                            \"The timestamp column {} type timestamp({}) is out of range, \"\n                                    + \"which exceeds the maximum scale of {}, \"\n                                    + \"it will be converted to timestamp({})\",\n                            column.getName(),","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/snowflake/SnowflakeTypeConverter.java#L295-L331","documentation":"When converting a TIME column for Snowflake, its scale (fractional-second digits) exceeds 9, the maximum Snowflake supports. SeaTunnel logs this warning and maps the column to Snowflake TIME with scale 9, so sub-nanosecond precision is truncated.","triggerScenarios":"reconvert() handles a Column with sqlType TIME and column.getScale() > 9, e.g. sources declaring time(12).","commonSituations":"MySQL time(6) is fine, but engines with higher fractional precision (rare, e.g. theoretical nanosecond+ sources or misconfigured schema files) trigger this when syncing to Snowflake.","solutions":["Set the source time column scale to <= 9.","Pre-create the Snowflake table with TIME(9) and cast/round values upstream.","Accept the warning if nanosecond (9-digit) precision is sufficient.","If extra digits matter, carry the column as STRING instead of TIME."],"exampleFix":"// before\nnew Column with sqlType=TIME, scale=12\n// after\nnew Column with sqlType=TIME, scale=9","handlingStrategy":"validation","validationCode":"if (column.getScale() != null && column.getScale() > 9) {\n    log.warn(\"TIME column {} scale {} will be truncated to 9 for Snowflake\",\n        column.getName(), column.getScale());\n}","typeGuard":"boolean fitsSnowflakeTimeScale(Column c) {\n    return c.getScale() == null || c.getScale() <= 9;\n}","tryCatchPattern":null,"preventionTips":["Cap time column scale at 9 in source schemas","Round fractional seconds upstream if more digits exist","Use STRING columns when sub-nanosecond precision must be preserved"],"tags":["jdbc","snowflake","time-scale","type-conversion"],"backgroundTag":"value-out-of-range","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}