Data & Analytics
A dbt v2 seed changes timestamp-shaped text in Snowflake
Protect Snowflake VARCHAR seed columns from a dbt v2 reseed that normalizes timestamp-shaped strings and breaks parsing.
November 5, 2026
A CSV seed looks unchanged, but the downstream model suddenly cannot parse its date field. In a dbt v2 Snowflake report, a value stored as 2022-10-01 00:00:00.00 became 2022-10-01T00:00:00 after reseeding an existing table. The column was VARCHAR, yet the value was normalized on the way in. The downstream to_date format expected the original text and failed.
Check the seed table, not only the CSV
Before upgrading or reseeding, save sample raw CSV bytes, the existing table schema, and exact stored values. Run dbt seed in a non-production schema under the old and new versions, then compare the stored strings byte for byte. A valid timestamp in a different representation is still a breaking change when a downstream parser treats the column as a text contract. Include rows with fractional seconds, nulls, and values that should remain literal strings.
Make the type explicit
dbt documents column_types for seeds and notes that inference otherwise determines data types. The issue reporter says column_types: {reportingdate: varchar} followed by dbt seed --full-refresh preserved the expected values in their reproduction. A full refresh drops and rebuilds the seed table, so test dependent permissions and downstream behavior before using it in production. If a consumer can accept ISO timestamps, changing its parser is another path, but that is a data contract change to review with all consumers.
Guard future reseeds
Add a seed test for exact representation when the textual format matters. Keep a small set of sentinel rows and compare their raw strings after every version upgrade or full refresh. Run the downstream date parse in the same release gate. If the behavior persists with explicit types, attach the CSV, schema, run commands, and before/after values to the upstream issue.
Adovo’s view
Text that looks like a date may still be business data with an exact format. A pipeline that silently rewrites it has changed the interface, even when the type name stays VARCHAR. Test the bytes your consumers read, not the appearance of the source file.
