diff --git a/.gitignore b/.gitignore index b9f264b..bf66c42 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ duckdb_unittest_tempdir/ testext test/python/__pycache__/ .Rhistory +_codeql_build_dir/ +_codeql_detected_source_root diff --git a/chsql/src/chsql_extension.cpp b/chsql/src/chsql_extension.cpp index cd9bb2e..8a7d486 100644 --- a/chsql/src/chsql_extension.cpp +++ b/chsql/src/chsql_extension.cpp @@ -100,6 +100,8 @@ namespace duckdb {DEFAULT_SCHEMA, "toYYYYMMDD", {"date_expression", nullptr}, {{nullptr, nullptr}}, R"(DATE_FORMAT(date_expression, '%Y%m%d'))"}, {DEFAULT_SCHEMA, "toYYYYMMDDhhmmss", {"date_expression", nullptr}, {{nullptr, nullptr}}, R"(DATE_FORMAT(date_expression, '%Y%m%d%H%M%S'))"}, {DEFAULT_SCHEMA, "formatDateTime", {"time", "format", "timezone", nullptr}, {{nullptr, nullptr}}, R"(CASE WHEN timezone IS NULL THEN strftime(time, format) ELSE strftime(time AT TIME ZONE timezone, format) END)"}, + {DEFAULT_SCHEMA, "toUnixTimestamp", {"date_expression", nullptr}, {{nullptr, nullptr}}, R"(CAST(EXTRACT(EPOCH FROM date_expression) AS BIGINT))"}, + {DEFAULT_SCHEMA, "fromUnixTimestamp", {"unix_timestamp", nullptr}, {{nullptr, nullptr}}, R"(CAST(to_timestamp(unix_timestamp) AS TIMESTAMP))"}, // String Functions {DEFAULT_SCHEMA, "empty", {"str", nullptr}, {{nullptr, nullptr}}, R"(LENGTH(str) = 0)"}, {DEFAULT_SCHEMA, "notEmpty", {"str", nullptr}, {{nullptr, nullptr}}, R"(LENGTH(str) > 0)"}, diff --git a/chsql/test/sql/chsql.test b/chsql/test/sql/chsql.test index 2212e6a..9ff906d 100644 --- a/chsql/test/sql/chsql.test +++ b/chsql/test/sql/chsql.test @@ -324,6 +324,16 @@ SELECT toDayOfMonth('2023-05-15'::DATE) ---- 15 +query I +SELECT toUnixTimestamp('2023-05-15 10:30:45'::TIMESTAMP) +---- +1684146645 + +query I +SELECT fromUnixTimestamp(1684146645) +---- +2023-05-15 10:30:45 + # String Functions query I SELECT empty('')