fix(redshift): convert_dttm method for redshift dataset and tests (#26283)

Co-authored-by: GauravM <gaurav@ip-192-168-0-100.ap-south-1.compute.internal>
(cherry picked from commit 60abf7e2af)
This commit is contained in:
gaurav7261
2023-12-21 02:25:34 +05:30
committed by Michael S. Molina
parent 57155fdfc7
commit c19447ee88
3 changed files with 64 additions and 15 deletions

View File

@@ -182,6 +182,19 @@ class PostgresBaseEngineSpec(BaseEngineSpec):
def epoch_to_dttm(cls) -> str:
return "(timestamp 'epoch' + {col} * interval '1 second')"
@classmethod
def convert_dttm(
cls, target_type: str, dttm: datetime, db_extra: dict[str, Any] | None = None
) -> str | None:
sqla_type = cls.get_sqla_column_type(target_type)
if isinstance(sqla_type, Date):
return f"TO_DATE('{dttm.date().isoformat()}', 'YYYY-MM-DD')"
if isinstance(sqla_type, DateTime):
dttm_formatted = dttm.isoformat(sep=" ", timespec="microseconds")
return f"""TO_TIMESTAMP('{dttm_formatted}', 'YYYY-MM-DD HH24:MI:SS.US')"""
return None
class PostgresEngineSpec(PostgresBaseEngineSpec, BasicParametersMixin):
engine = "postgresql"
@@ -357,19 +370,6 @@ WHERE datistemplate = false;
inspector.get_foreign_table_names(schema)
)
@classmethod
def convert_dttm(
cls, target_type: str, dttm: datetime, db_extra: dict[str, Any] | None = None
) -> str | None:
sqla_type = cls.get_sqla_column_type(target_type)
if isinstance(sqla_type, Date):
return f"TO_DATE('{dttm.date().isoformat()}', 'YYYY-MM-DD')"
if isinstance(sqla_type, DateTime):
dttm_formatted = dttm.isoformat(sep=" ", timespec="microseconds")
return f"""TO_TIMESTAMP('{dttm_formatted}', 'YYYY-MM-DD HH24:MI:SS.US')"""
return None
@staticmethod
def get_extra_params(database: Database) -> dict[str, Any]:
"""