Skip to content

Commit a92fd5c

Browse files
committed
Feat: add dtntz date macro variant
1 parent e07c5fe commit a92fd5c

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

sqlmesh/utils/date.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,15 +253,20 @@ def date_dict(
253253

254254
for prefix, time_like in prefixes:
255255
dt = to_datetime(time_like)
256+
dtntz = dt.replace(tzinfo=None)
257+
256258
millis = to_timestamp(time_like)
259+
257260
kwargs[f"{prefix}_dt"] = dt
261+
kwargs[f"{prefix}_dtntz"] = dtntz
258262
kwargs[f"{prefix}_date"] = to_date(dt)
259263
kwargs[f"{prefix}_ds"] = to_ds(time_like)
260264
kwargs[f"{prefix}_ts"] = to_ts(dt)
261265
kwargs[f"{prefix}_tstz"] = to_tstz(dt)
262266
kwargs[f"{prefix}_epoch"] = millis / 1000
263267
kwargs[f"{prefix}_millis"] = millis
264268
kwargs[f"{prefix}_hour"] = dt.hour
269+
265270
return kwargs
266271

267272

tests/core/test_model.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10518,3 +10518,28 @@ def test_boolean_property_validation() -> None:
1051810518
)
1051910519
model = load_sql_based_model(expressions, dialect="tsql")
1052010520
assert model.enabled
10521+
10522+
10523+
def test_datetime_without_timezone_variable_redshift() -> None:
10524+
expressions = d.parse(
10525+
"""
10526+
MODEL (
10527+
name test,
10528+
kind INCREMENTAL_BY_TIME_RANGE (
10529+
time_column test_time_col,
10530+
batch_size 1,
10531+
batch_concurrency 1
10532+
),
10533+
start '2025-06-01',
10534+
dialect redshift
10535+
);
10536+
10537+
SELECT @start_dtntz AS test_time_col
10538+
"""
10539+
)
10540+
model = load_sql_based_model(expressions, dialect="redshift")
10541+
10542+
assert (
10543+
model.render_query_or_raise().sql("redshift")
10544+
== '''SELECT CAST('1970-01-01 00:00:00' AS TIMESTAMP) AS "test_time_col"'''
10545+
)

tests/utils/test_date.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,10 @@ def test_date_dict():
258258
"execution_dt": datetime(2020, 1, 2, 1, 0, 0, tzinfo=UTC),
259259
"start_dt": datetime(2020, 1, 1, 0, 0, 0, tzinfo=UTC),
260260
"end_dt": datetime(2020, 1, 2, 0, 0, 0, tzinfo=UTC),
261+
"latest_dtntz": datetime(2020, 1, 2, 1, 0, 0, tzinfo=None),
262+
"execution_dtntz": datetime(2020, 1, 2, 1, 0, 0, tzinfo=None),
263+
"start_dtntz": datetime(2020, 1, 1, 0, 0, 0, tzinfo=None),
264+
"end_dtntz": datetime(2020, 1, 2, 0, 0, 0, tzinfo=None),
261265
"latest_date": date(2020, 1, 2),
262266
"execution_date": date(2020, 1, 2),
263267
"start_date": date(2020, 1, 1),

0 commit comments

Comments
 (0)