From 38fca85bc5924b20d14d7f87faf692300b0fd36d Mon Sep 17 00:00:00 2001 From: Iaroslav Zeigerman Date: Wed, 20 Aug 2025 15:19:52 -0700 Subject: [PATCH] Fix: Ignore datetime column parsing erros when rendering seeds --- sqlmesh/core/model/definition.py | 2 +- tests/core/test_model.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/sqlmesh/core/model/definition.py b/sqlmesh/core/model/definition.py index 768fcd2c02..caec1c86fe 100644 --- a/sqlmesh/core/model/definition.py +++ b/sqlmesh/core/model/definition.py @@ -1610,7 +1610,7 @@ def render_seed(self) -> t.Iterator[QueryOrDF]: for column in [*date_columns, *datetime_columns]: import pandas as pd - df[column] = pd.to_datetime(df[column]) + df[column] = pd.to_datetime(df[column], infer_datetime_format=True, errors="ignore") # type: ignore # extract datetime.date from pandas timestamp for DATE columns for column in date_columns: diff --git a/tests/core/test_model.py b/tests/core/test_model.py index df758713a6..e2a1d30f08 100644 --- a/tests/core/test_model.py +++ b/tests/core/test_model.py @@ -9917,6 +9917,31 @@ def test_seed_dont_coerce_na_into_null(tmp_path): assert next(model.render(context=None)).to_dict() == {"code": {0: "NA"}} +def test_seed_coerce_datetime(tmp_path): + model_csv_path = (tmp_path / "model.csv").absolute() + + with open(model_csv_path, "w", encoding="utf-8") as fd: + fd.write("bad_datetime\n9999-12-31 23:59:59") + + expressions = d.parse( + f""" + MODEL ( + name db.seed, + kind SEED ( + path '{str(model_csv_path)}', + ), + columns ( + bad_datetime datetime, + ), + ); + """ + ) + + model = load_sql_based_model(expressions, path=Path("./examples/sushi/models/test_model.sql")) + df = next(model.render(context=None)) + assert df["bad_datetime"].iloc[0] == "9999-12-31 23:59:59" + + def test_missing_column_data_in_columns_key(): expressions = d.parse( """