diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2022-06-01 16:13:36 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2022-06-01 16:13:36 +0000 |
| commit | 7b6fb299bb6b47dfeb22a5650b95af7fa0b35ec2 (patch) | |
| tree | 84d683a496c9951838adb4efc09687f7c55b05af /lib/sqlalchemy/dialects/oracle | |
| parent | 79dbe94bb4ccd75888d57f388195a3ba4fa6117e (diff) | |
| parent | 349a7c5e0e2aeeac98fad789b0043a4bdfeed837 (diff) | |
| download | sqlalchemy-7b6fb299bb6b47dfeb22a5650b95af7fa0b35ec2.tar.gz | |
Merge "add backend agnostic UUID datatype" into main
Diffstat (limited to 'lib/sqlalchemy/dialects/oracle')
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/base.py | 27 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/cx_oracle.py | 3 |
2 files changed, 27 insertions, 3 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py index 55d5a4fb5..37b81e1dd 100644 --- a/lib/sqlalchemy/dialects/oracle/base.py +++ b/lib/sqlalchemy/dialects/oracle/base.py @@ -690,7 +690,7 @@ class LONG(sqltypes.Text): class _OracleDateLiteralRender: - def literal_processor(self, dialect): + def _literal_processor_datetime(self, dialect): def process(value): if value is not None: if getattr(value, "microsecond", None): @@ -709,6 +709,25 @@ class _OracleDateLiteralRender: return process + def _literal_processor_date(self, dialect): + def process(value): + if value is not None: + if getattr(value, "microsecond", None): + value = ( + f"""TO_TIMESTAMP""" + f"""('{value.isoformat().split("T")[0]}', """ + """'YYYY-MM-DD')""" + ) + else: + value = ( + f"""TO_DATE""" + f"""('{value.isoformat().split("T")[0]}', """ + """'YYYY-MM-DD')""" + ) + return value + + return process + class DATE(_OracleDateLiteralRender, sqltypes.DateTime): """Provide the oracle DATE type. @@ -723,12 +742,16 @@ class DATE(_OracleDateLiteralRender, sqltypes.DateTime): __visit_name__ = "DATE" + def literal_processor(self, dialect): + return self._literal_processor_datetime(dialect) + def _compare_type_affinity(self, other): return other._type_affinity in (sqltypes.DateTime, sqltypes.Date) class _OracleDate(_OracleDateLiteralRender, sqltypes.Date): - pass + def literal_processor(self, dialect): + return self._literal_processor_date(dialect) class INTERVAL(sqltypes.NativeForEmulated, sqltypes._AbstractInterval): diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index 290789f32..fbac8b93e 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -580,7 +580,8 @@ class _CXOracleDate(oracle._OracleDate): class _CXOracleTIMESTAMP(oracle._OracleDateLiteralRender, sqltypes.TIMESTAMP): - pass + def literal_processor(self, dialect): + return self._literal_processor_datetime(dialect) # TODO: the names used across CHAR / VARCHAR / NCHAR / NVARCHAR |
