diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-02-20 08:50:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-02-20 08:50:35 +0000 |
commit | 6a22086850fc960715b618e82f4c2e43a4529146 (patch) | |
tree | 2005800d79fbd3b3a72ed36d10857fadd61306b7 /sqlglot/dialects/dialect.py | |
parent | Releasing debian version 11.1.3-1. (diff) | |
download | sqlglot-6a22086850fc960715b618e82f4c2e43a4529146.tar.xz sqlglot-6a22086850fc960715b618e82f4c2e43a4529146.zip |
Merging upstream version 11.2.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/dialects/dialect.py')
-rw-r--r-- | sqlglot/dialects/dialect.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sqlglot/dialects/dialect.py b/sqlglot/dialects/dialect.py index f4e8fd4..af36256 100644 --- a/sqlglot/dialects/dialect.py +++ b/sqlglot/dialects/dialect.py @@ -423,3 +423,18 @@ def trim_sql(self: Generator, expression: exp.Trim) -> str: from_part = "FROM " if trim_type or remove_chars else "" collation = f" COLLATE {collation}" if collation else "" return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})" + + +def str_to_time_sql(self, expression: exp.Expression) -> str: + return self.func("STRPTIME", expression.this, self.format_time(expression)) + + +def ts_or_ds_to_date_sql(dialect: str) -> t.Callable: + def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str: + _dialect = Dialect.get_or_raise(dialect) + time_format = self.format_time(expression) + if time_format and time_format not in (_dialect.time_format, _dialect.date_format): + return f"CAST({str_to_time_sql(self, expression)} AS DATE)" + return f"CAST({self.sql(expression, 'this')} AS DATE)" + + return _ts_or_ds_to_date_sql |