全部產品
Search
文件中心

ApsaraDB RDS:DuckDB分析執行個體相容性說明

更新時間:Sep 13, 2025

本文介紹RDS MySQL DuckDB分析執行個體的相容性。

支援的資料類型

類型

MySQL資料類型

相容性說明

數實值型別

BOOLEAN

相容

TINYINTTINYINT UNSIGNED

相容

SMALLINTSMALLINT UNSIGNED

相容

INTINTEGERINT UNSIGNEDINTEGER UNSIGNED

相容

BIGINTBIGINT UNSIGNED

相容

FLOAT

相容

DOUBLE

相容

DECIMAL(m,d)

m是數值的最大精度,當m<=38時完全相容,當m>38時,會轉換為DOUBLE類型進行儲存,此時會存在精度損失。

字元類型

CHARVARCHAR

僅支援UTF8系列的字元集和校對規則。

TINYTEXTTEXTMEDIUMTEXTLONGTEXT

相容

JSON

相容

SET

相容

ENUM

相容

二進位字元類型

BINARYVARBINARY

相容

BIT

相容

TINYBLOBBLOBMEDIUMBLOBLONGBLOB

相容

時間類型

YEAR

相容

TIME

DuckDB分析執行個體支援範圍為'00:00:00'~'23:59:59',資料格式為'HH:MM:SS'

而MySQL支援範圍為'-838:59:59'~'838:59:59'。由於兩者在取值範圍上存在差異,若資料不在DuckDB分析執行個體支援範圍內,可能導致查詢結果不一致。

DATE

DuckDB分析執行個體支援範圍為'0001-01-01'~'9999-12-31',資料格式為'YYYY-MM-DD'

而MySQL支援範圍為'0000-00-00'~'0001-01-01'。由於兩者在取值範圍上存在差異,若資料不在DuckDB分析執行個體支援範圍內,可能導致查詢結果不一致。

DATETIME

DuckDB分析執行個體支援範圍為'0001-01-01 00:00:00.000000' UTC~'9999-12-31 00:00:00.999999' UTC,資料格式為'YYYY-MM-DD HH:MM:SS.MS'

而MySQL支援範圍為'0000-00-00 00:00:00'~'0001-01-01 00:00:00'。由於兩者在取值範圍上存在差異,若資料不在DuckDB分析執行個體支援範圍內,可能導致查詢結果不一致。

TIMESTAMP

相容

空間資料類型

GEOMETRYPOINTLINESTRINGPOLYGONMULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTION

不相容

SELECT語句限制

  • 注釋

    不支援#注釋。例如:

    SELECT * FROM t1 #comment;
    ;
  • 字元集轉換

    無論目標字元集是否支援,均不支援任何形式的字元集轉換。例如:

    SELECT convert(id using gbk) FROM t1;
    SELECT cast(id AS CHAR CHARACTER SET utf8mb4) FROM t1;
  • JOIN文法

    不支援在一條SQL中同時使用顯示JOIN和隱式JOIN。例如:

    SELECT * FROM t1 JOIN (t2, t3);
  • 時間間隔單位(Interval unit)

    不支援以下時間間隔單位。

    YEAR_MONTH, DAY_HOUR, HOUR_MINUTE, DAY_MINUTE, HOUR_SECOND, DAY_SECOND, SECOND_MICROSECOND, HOUR_MICROSECOND, DAY_MICROSECOND, MINUTE_SECOND, MINUTE_MICROSECOND, SQL_TSI_HOUR
  • 時間間隔運算式(Interval expr unit)

    在Interval expr unit運算式中,若expr為非常量運算式,必須加括弧明確運算式的範圍。例如:

    # 以下SQL不支援
    SELECT '2018-12-31 23:59:59' + INTERVAL -1 SECOND; 
    # 需要改寫為
    SELECT '2018-12-31 23:59:59' + INTERVAL (-1) SECOND; 
  • 別名定義

    • 不支援expr 'alias'expr "alias"的別名用法。例如:

      # 不支援
      SELECT 1 '1';
      SELECT 1 "1";
      # 可以改寫為
      SELECT 1 AS '1';
      SELECT 1 AS "1";
      SELECT 1 AS `1`;
      SELECT 1 `1`;
      # 以上SQL完全等價
    • 如果別名是關鍵字,必須使用AS或反引號。例如:

      SELECT id time FROM t1;
      
      # 需要改寫為以下任意一個
      SELECT id AS time FROM t1;
      SELECT id `time` FROM t1;
      SELECT id AS `time` FROM t1;
      SELECT id AS 'time' FROM t1;
      SELECT id AS "time" FROM t1;
  • 子查詢

    不支援等值非標量子查詢。例如:

    SELECT * FROM t1 WHERE (id, col1) = (SELECT id, col1 FROM t1);
  • 資料類型轉換

    不支援顯式轉換為BINARY(num)SIGNED或 UNSIGNED 資料類型。例如:

    SELECT CAST('abc' AS binary(1));
    SELECT CAST(1 AS SIGNED);
    SELECT CAST(1 AS UNSIGNED);
  • 列修飾符

    不支援Binary修飾列名。例如:

    SELECT binary id FROM t1;
  • 複雜運算運算式

    對於複雜運算運算式,建議通過括弧明確結合律以避免解析錯誤。

    # 符號(!=-)在DuckDB分析執行個體中無法正確解析
    SELECT 1 !=-1;
    # 建議改寫為
    SELECT 1 != (-1);
    
    # 符號(--)在DuckDB分析執行個體中無法正確解析
    SELECT --1;
    # 建議改寫為
    SELECT -(-1);

類型轉換問題

為確保執行效率,DuckDB分析執行個體在執行過程中採用強型別約束機制。在查詢執行時,系統會根據上下文自動進行類型轉換,這種轉換稱為隱式類型轉換。對於無法通過隱式方式完成轉換的情境,您需要使用CASTCONVERT函數顯式指定類型轉換,以確保查詢能夠正確執行。

函數中支援的隱式類型轉換規則

說明
  • “/”表示不涉及隱式轉換,“✔️”表示支援隱式轉換,“✖️”表示不支援隱式轉換。

  • 常規字串類型代指MySQL中的CHARVARCHARTINYTEXTTEXTMEDIUMTEXTLONGTEXTJSONSETENUM

  • 二進位字串類型代指MySQL中的BINARYVARBINARYBITTINYBLOBBLOBMEDIUMBLOBLONGBLOB

  • 不支援大範圍整數類型轉換為小範圍整數類型。

轉換至基礎標量類型

源類型

隱式轉換至基礎標量類型

字串字面量

數值字面量

基礎標量

字串字面量

/

✖️

數值字面量

✖️

/

數值

BOOLEAN

✖️

✖️

整數類型

✖️

✖️

FLOAT

✖️

✖️

DOUBLE

✖️

✖️

DECIMAL

✖️

✖️

字串

常規字串

✖️

✖️

二進位字串

✖️

✖️

日期與時間

YEAR

✖️

✖️

DATE

✖️

✖️

TIME

✖️

✖️

DATETIME

✖️

✖️

TIMESTAMP

✖️

✖️

轉換至數實值型別

源類型

隱式轉換至數實值型別

BOOLEAN

整數類型

FLOAT

DOUBLE

DECIMAL

基礎標量

字串字面量

✖️

✖️

✖️

✔️

✖️

數值字面量

✖️

✔️

✔️

✔️

✔️

數值

BOOLEAN

/

✖️

✖️

✖️

✖️

整數類型

✖️

/

✔️

✔️

✔️

FLOAT

✖️

✔️:僅支援轉換為BIGINT

/

✔️

✖️

DOUBLE

✖️

✔️:僅支援轉換為BIGINT

✖️

/

✖️

DECIMAL

✖️

✔️

✔️

✔️

/

字串

常規字串

✖️

✖️

✖️

✔️

✖️

二進位字串

✖️

✖️

✖️

✖️

✖️

日期與時間

YEAR

✖️

✔️

✔️

✔️

✔️

DATE

✖️

✖️

✖️

✔️

✖️

TIME

✖️

✖️

✖️

✔️

✖️

DATETIME

✖️

✖️

✖️

✔️

✖️

TIMESTAMP

✖️

✖️

✖️

✔️

✖️

轉換至字串類型

源類型

隱式轉換至字串類型

常規字串

二進位字串

基礎標量

字串字面量

✔️

✖️

數值字面量

✖️

✖️

數值

BOOLEAN

✖️

✖️

整數類型

✔️

✖️

FLOAT

✔️

✖️

DOUBLE

✔️

✖️

DECIMAL

✔️

✖️

字串

常規字串

/

✖️

二進位字串

✖️

/

日期與時間

YEAR

✔️

✖️

DATE

✔️

✖️

TIME

✔️

✖️

DATETIME

✔️

✖️

TIMESTAMP

✔️

✖️

轉換至日期與時間類型

源類型

隱式轉換至日期與時間類型

YEAR

DATE

TIME

DATETIME

TIMESTAMP

基礎標量

字串字面量

✖️

✖️

✖️

✖️

✖️

數值字面量

✔️

✖️

✖️

✖️

✖️

數值

BOOLEAN

✖️

✖️

✖️

✖️

✖️

整數類型

✖️

✖️

✖️

✖️

✖️

FLOAT

✖️

✖️

✖️

✖️

✖️

DOUBLE

✖️

✖️

✖️

✖️

✖️

DECIMAL

✖️

✖️

✖️

✖️

✖️

字串

常規字串

✖️

✖️

✖️

✖️

✖️

二進位字串

✖️

✖️

✖️

✖️

✖️

日期與時間

YEAR

/

✖️

✖️

✖️

✖️

DATE

✖️

/

✖️

✔️

✔️

TIME

✖️

✖️

/

✔️

✔️

DATETIME

✖️

✖️

✖️

/

✔️

TIMESTAMP

✖️

✖️

✖️

✔️

/

類型比較中支援的隱式轉換規則

DuckDB分析執行個體在類型轉換和比較規則上具有更高的嚴格性和一致性,但在某些情境下可能與MySQL存在行為差異。具體如下:

  • 字串到日期的隱式轉換:字串隱式轉換為日期時,如果字串格式無法正確解析為有效日期值,SQL查詢將報錯並執行失敗。

  • 整數類型之間的比較規則:不同整數類型之間進行比較時,DuckDB分析執行個體會統一向取值範圍更大的整數類型進行轉換。

  • 多元運算式的類型轉換順序:對於col1 in (col2, col3, col4, ...)、col1 between col2 and col3、coalesce(col1, col2, col3, ...)等多元運算式,會按照順序進行類型轉換。

  • YEAR類型的相容性差異:在DuckDB分析執行個體中,YEAR類型會被轉換為INTEGER類型進行比較,可能與MySQL存在不相容。例如:

    CREATE TABLE t1 (id YEAR PRIMARY KEY);
    INSERT INTO t1 VALUES (1980);
    SELECT * FROM t1 WHERE id BETWEEN 70 AND 90;
    
    # MySQL查詢結果
    +------+
    | id   |
    +------+
    | 1980 |
    +------+
    
    # DuckDB分析執行個體查詢結果
    Empty set.
  • 布爾類型的字串轉換規則:DuckDB分析執行個體支援將'1'、'0'、'yes'、'no'、'true'、'false'六種字串轉換為BOOLEAN類型,其餘字串轉換會報錯;而MySQL會將'1'轉換為true,其餘字串均轉換為false。因此,如下SQL可能會存在結果不一致問題:

    CREATE TABLE t1 (id INT PRIMARY KEY);
    INSERT INTO t1 VALUES (1);
    SELECT id FROM t1 WHERE 'true';
    
    # MySQL查詢結果
    Empty set
    
    # DuckDB分析執行個體查詢結果
    +------+
    | id   |
    +------+
    |    1 |
    +------+

說明
  • 當不同類型的資料進行比較時,系統會按下表規則,將資料“轉換為同一類型”後進行比較;對於不支援(✖️)的類型比較,會直接報錯。

  • 常規字串類型代指MySQL中的CHARVARCHARTINYTEXTTEXTMEDIUMTEXTLONGTEXTJSONSETENUM

  • 二進位字串類型代指MySQL中的BINARYVARBINARYBITTINYBLOBBLOBMEDIUMBLOBLONGBLOB

與基礎標量類型比較

源類型

與基礎標量類型比較

字串字面量

數值字面量

基礎標量

字串字面量

字串

數值字面量

數值字面量

數值字面量

較大範圍的數實值型別

數值

BOOLEAN

BOOLEAN

較大範圍的數實值型別

整數類型

整數類型

較大範圍的數實值型別

FLOAT

FLOAT

較大範圍的數實值型別

DOUBLE

DOUBLE

較大範圍的數實值型別

DECIMAL

DECIMAL

較大範圍的數實值型別

字串

常規字串

常規字串

數值字面量

二進位字串

二進位字串

✖️

日期與時間

YEAR

YEAR

較大範圍的數實值型別

DATE

DATETIME

✖️

TIME

TIME

✖️

DATETIME

DATETIME

✖️

TIMESTAMP

TIMESTAMP

✖️

與數實值型別比較

源類型

與數實值型別比較

BOOLEAN

整數類型

FLOAT

DOUBLE

DECIMAL

基礎標量

字串字面量

BOOLEAN

整數類型

FLOAT

DOUBLE

DECIMAL

數值字面量

較大範圍的數實值型別

較大範圍的數實值型別

較大範圍的數實值型別

較大範圍的數實值型別

較大範圍的數實值型別

數值

BOOLEAN

BOOLEAN

整數類型

FLOAT(不等式比較✖️)

DOUBLE(不等式比較✖️)

DECIMAL(不等式比較✖️)

整數類型

整數類型

整數類型

FLOAT

DOUBLE

DECIMAL

FLOAT

FLOAT(不等式比較✖️)

FLOAT

FLOAT

DOUBLE

FLOAT

DOUBLE

DOUBLE(不等式比較✖️)

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DECIMAL

DECIMAL(不等式比較✖️)

DECIMAL

FLOAT

DOUBLE

DECIMAL

字串

常規字串

BOOLEAN

整數類型

FLOAT

DOUBLE

DECIMAL

二進位字串

✖️

✖️

✖️

✖️

✖️

日期與時間

YEAR

INTEGER

較大範圍的整數類型

FLOAT

DOUBLE

DECIMAL

DATE

✖️

✖️

✖️

DOUBLE

✖️

TIME

✖️

✖️

✖️

DOUBLE

✖️

DATETIME

✖️

✖️

✖️

DOUBLE

✖️

TIMESTAMP

✖️

✖️

✖️

DOUBLE

✖️

與字串類型比較

源類型

與字串類型比較

常規字串

二進位字串

基礎標量

字串字面量

常規字串

二進位字串

數值字面量

數值字面量

✖️

數值

BOOLEAN

BOOLEAN

✖️

整數類型

整數類型

✖️

FLOAT

FLOAT

✖️

DOUBLE

DOUBLE

✖️

DECIMAL

DECIMAL

✖️

字串

常規字串

常規字串

二進位字串

二進位字串

二進位字串

二進位字串

日期與時間

YEAR

INTEGER

✖️

DATE

DATE

✖️

TIME

TIME

✖️

DATETIME

DATETIME

✖️

TIMESTAMP

TIMESTAMP

✖️

與日期與時間類型比較

源類型

與日期與時間類型比較

YEAR

DATE

TIME

DATETIME

TIMESTAMP

基礎標量

字串字面量

YEAR

DATETIME

TIME

DATETIME

TIMESTAMP

數值字面量

較大範圍的數實值型別

✖️

✖️

✖️

✖️

數值

BOOLEAN

INTEGER

✖️

✖️

✖️

✖️

整數類型

較大範圍的整數類型

✖️

✖️

✖️

✖️

FLOAT

FLOAT

✖️

✖️

✖️

✖️

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DECIMAL

DECIMAL

✖️

✖️

✖️

✖️

字串

常規字串

INTEGER

DATE

TIME

DATETIME

TIMESTAMP

二進位字串

✖️

✖️

✖️

✖️

✖️

日期與時間

YEAR

INTEGER

✖️

✖️

✖️

✖️

DATE

✖️

DATE

✖️

DATETIME

TIMESTAMP

TIME

✖️

✖️

TIME

✖️

✖️

DATETIME

✖️

DATETIME

✖️

DATETIME

DATETIME

TIMESTAMP

✖️

TIMESTAMP

✖️

DATETIME

TIMESTAMP

可能出現的查詢結果不一致問題

數值運算

  • 浮點數的大小比較存在不相容。例如:

    CREATE TABLE t1 (id FLOAT PRIMARY KEY);
    INSERT INTO t1 VALUES (1.22), (1.23), (1.24);
    SELECT * FROM t1 WHERE t1.id > 1.23;
    
    # MySQL查詢結果
    +------+
    | id   |
    +------+
    | 1.23 |
    | 1.24 |
    +------+
    
    # DuckDB分析執行個體查詢結果
    +------+
    | id   |
    +------+
    | 1.24 |
    +------+
  • 浮點數的複雜複合運算結果因為浮點誤差會存在不一致。

  • 當整數、DECIMAL類型之間做運算時,結果不能超過該類型的取值範圍,否則可能出現結果溢出導致的執行失敗。

    CREATE TABLE t1 (id TINYINT PRIMARY KEY);
    INSERT INTO t1 VALUES (100);
    SELECT id * 2 FROM t1;
    
    # MySQL查詢結果
    +--------+
    | id * 2 |
    +--------+
    |    200 |
    +--------+
    
    # DuckDB分析執行個體查詢結果
    ERROR 7577 (HY000): [DuckDB] Out of Range Error: Overflow in multiplication of INT8 (100 * 2)!.

校對規則導致的結果不一致問題

utf8mb4_0900_xx系列的校對規則在部分符號字元比較存在不相容。例如:

CREATE TABLE t1 ( id varchar(20) COLLATE utf8mb4_0900_ai_ci PRIMARY KEY );
INSERT INTO t1 VALUES ('!'), ('_');
SELECT * FROM t1 ORDER BY id;

# MySQL查詢結果
+----+
| id |
+----+
| _  |
| !  |
+----+

# DuckDB分析執行個體查詢結果
+----+
| id |
+----+
| !  |
| _  |
+----+

IN的向量子查詢對於NULL值的處理

在DuckDB分析執行個體中,IN的向量子查詢對於NULL值的處理存在不相容問題。例如:

CREATE TABLE t1 (id INT PRIMARY KEY, col1 INT);
INSERT INTO t1 VALUES (1, 1), (2, 2);
CREATE TABLE t2 (id INT PRIMARY KEY, col1 INT);
INSERT INTO t2 VALUES (1, NULL);

select (id, col1) in (select id, col1 from t2) from t1;

# MySQL查詢結果
+-----------------------------------------+
| (id, col1) in (select id, col1 from t2) |
+-----------------------------------------+
|                                    NULL |
|                                       0 |
+-----------------------------------------+

# DuckDB分析執行個體查詢結果
+-----------------------------------------+
| (id, col1) in (select id, col1 from t2) |
+-----------------------------------------+
|                                    NULL |
|                                    NULL |
+-----------------------------------------+

對於資料(2, 2),IN後不存在向量首碼的匹配項,MySQL返回0,DuckDB分析執行個體返回NULL。

函數限制

彙總函式

函數名

是否支援

使用限制

AVG

無限制

BIT_AND

不支援字串類型、DECIMAL類型、日期類型。

BIT_OR

不支援字串類型、DECIMAL類型、日期類型。

BIT_XOR

不支援字串類型、DECIMAL類型、日期類型。

COUNT

無限制

COUNT(DISTINCT)

無限制

GROUP_CONCAT

不支援多列GROUP_CONCAT,不支援SEPARATOR

JSON_ARRAYAGG

不涉及

JSON_OBJECTAGG

不涉及

MAX

無限制

MIN

無限制

STD

無限制

STDDEV

無限制

STDDEV_POP

無限制

STDDEV_SAMP

無限制

SUM

無限制

VAR_POP

無限制

VAR_SAMP

無限制

VARIANCE

無限制

數值函數

數值函數不支援BOOLEAN類型。

函數名

是否支援

使用限制

%

無限制

MOD

無限制

*

無限制

+

無限制

-

無限制

/

無限制

ABS()

無限制

ACOS()

無限制

ASIN()

無限制

ATAN()

不支援ATAN(y, x)

ATAN2()

不涉及

CEIL()

無限制

CEILING()

無限制

CONV()

不涉及

COS()

無限制

COT()

無限制

CRC32()

不涉及

DEGREES()

無限制

DIV

無限制

EXP()

無限制

FLOOR()

無限制

LN()

無限制

LOG()

無限制

LOG10()

無限制

LOG2()

無限制

MOD()

無限制

PI()

無限制

POW()

無限制

POWER()

無限制

RADIANS()

無限制

RAND()

無限制

ROUND()

無限制

SIGN()

無限制

SIN()

無限制

SQRT()

無限制

TAN()

無限制

TRUNCATE()

不涉及

字串函數

DuckDB分析執行個體嚴格區分二進位字串(BLOB、VARBINARY等)和字串(VARCHAR、TEXT、JSON等),因此以下字串函數只能以字串為輸入,不能以二進位字串為輸入。對於部分能以二進位字串為輸入的函數,下文將給出特別說明。

函數名

是否支援

使用限制

ASCII()

無限制

BIN()

MySQL中BIN('')返回NULL,DuckDB分析執行個體返回'0'

BIT_LENGTH()

無限制

CHAR()

不涉及

CHAR_LENGTH()

無限制

CHARACTER_LENGTH()

無限制

CONCAT()

是:可以以二進位字串為輸入。

無限制

CONCAT_WS()

是:可以以二進位字串為輸入。

無限制

ELT()

不涉及

EXPORT_SET()

不涉及

FIELD()

不涉及

FIND_IN_SET()

該函數的第一個參數需要是字元類型,非字元類型可能會產生與MySQL不一致的結果。

FORMAT()

不涉及

FROM_BASE64()

該函數使用Base64解碼規則,解碼失敗時會報錯。

HEX()

無限制

INSERT()

無限制

INSTR()

無限制

LCASE()

無限制

LEFT()

無限制

LENGTH()

是:可以以二進位字串為輸入。

無限制

LIKE

LIKE不受校對規則的影響。

LOAD_FILE()

不涉及

LOCATE()

無限制

LOWER()

無限制

LPAD()

無限制

LTRIM()

無限制

MAKE_SET()

不涉及

MATCH()

不涉及

MID()

是:可以以二進位字串為輸入。

無限制

NOT LIKE

NOT LIKE函數不受校對規則的影響。

NOT REGEXP

不涉及

OCT()

MySQL中OCT('')返回NULL,DuckDB分析執行個體返回'0'

OCTET_LENGTH()

是:可以以二進位字串為輸入。

無限制

ORD()

無限制

POSITION()

無限制

QUOTE()

不涉及

REGEXP

不涉及

REGEXP_INSTR()

不涉及

REGEXP_LIKE()

不涉及

REGEXP_REPLACE()

不涉及

REGEXP_SUBSTR()

不涉及

REPEAT()

是:可以以二進位字串為輸入。

無限制

REPLACE()

無限制

REVERSE()

無限制

RIGHT()

無限制

RLIKE

不涉及

RPAD()

無限制

RTRIM()

無限制

SOUNDEX()

不涉及

SOUNDEX LIKE

不涉及

SPACE()

無限制

STRCMP()

無限制

SUBSTR()

不支援SUBSTR(str FROM pos)SUBSTR(str FROM pos FOR len)用法。

SUBSTRING()

不支援SUBSTRING(str FROM pos)SUBSTRING(str FROM pos FOR len)用法。

SUBSTRING_INDEX()

無限制

TO_BASE64()

是:可以以二進位字串為輸入。

該函數傳回值為二進位字串類型。

TRIM()

無限制

UCASE()

無限制

UNHEX()

  • 該函數傳回值為二進位字串類型。

  • 該函數遇到非HEX digit會報錯。

UPPER()

無限制

WEIGHT_STRING()

不涉及

日期函數

DuckDB分析執行個體中日期函數暫不接受字串作為輸入,需要先進行顯式類型轉換。例如:

  • 對於表中字串類型列:

    SELECT ADDDATE(CAST(varchar_test as TIME), INTERVAL 1 DAY) FROM t1;
    SELECT ADDDATE(CAST(varchar_test as DATE), INTERVAL 1 DAY) FROM t1;
    SELECT ADDDATE(CAST(varchar_test as DATETIME), INTERVAL 1 DAY) FROM t1;
  • 對於字串字面值常量:

    SELECT ADDDATE(TIME '12:00:00', INTERVAL 1 DAY) FROM t1;
    SELECT ADDDATE(DATE '2020-01-01', INTERVAL 1 DAY) FROM t1;
    SELECT ADDDATE(TIMESTAMP '2020-01-01 12:00:00', INTERVAL 1 DAY) FROM t1;

函數名

是否支援

使用限制

ADDDATE()

當ADDDATE函數的第一個參數是TIME類型時,例如ADDDATE(TIME '12:00:00', INTERVAL 1 HOUR),ADDDATE函數會預設將TIME轉換為TIMESTAMP進行運算。如果需要避免TIME向TIMESTAMP做隱式轉換可以使用DATE_ADD函數。

ADDTIME()

如果傳回值超出DuckDB分析執行個體的時間類型資料的取值範圍,會產生結果不一致的問題。

CONVERT_TZ()

無限制

CURRENT_DATE(),CURRENT_DATE

無限制

CURRENT_TIME(),CURRENT_TIME

無限制

CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP

無限制

CURTIME()

無限制

DATE()

無限制

DATE_ADD()

當DATE_ADD函數的第一個參數是TIME類型時,例如DATE_ADD(TIME '12:00:00', INTERVAL 1 HOUR)DATE_ADD函數不會進行TIME到TIMESTAMP的隱式類型轉換。

DATE_FORMAT()

不支援%X%V%u

DATE_SUB()

DATE_ADD()

DATEDIFF()

無限制

DAY()

無限制

DAYNAME()

無限制

DAYOFMONTH()

無限制

DAYOFWEEK()

無限制

DAYOFYEAR()

無限制

EXTRACT()

無限制

FROM_DAYS()

無限制

FROM_UNIXTIME()

無限制

GET_FORMAT()

不涉及

HOUR()

無限制

LAST_DAY

無限制

LOCALTIME(),LOCALTIME

無限制

LOCALTIMESTAMP,LOCALTIMESTAMP()

無限制

MAKEDATE()

無限制

MAKETIME()

無限制

MICROSECOND()

無限制

MINUTE()

無限制

MONTH()

無限制

MONTHNAME()

無限制

NOW()

無限制

PERIOD_ADD()

年份超過9999暫不支援。

PERIOD_DIFF()

年份超過9999暫不支援。

QUARTER()

無限制

SEC_TO_TIME()

如果傳回值超出DuckDB分析執行個體的時間類型資料的取值範圍,會產生結果不一致的問題。

SECOND()

無限制

STR_TO_DATE()

  • 不支援%X%V%u

  • 如果存在format specifier沒有被正確匹配,則返回NULL。

SUBDATE()

ADDDATE()

SUBTIME()

如果傳回值超出DuckDB分析執行個體的時間類型資料的取值範圍,會產生結果不一致的問題。

SYSDATE()

無限制

TIME()

不涉及

TIME_FORMAT()

無限制

TIME_TO_SEC()

不支援DAY TIME格式的輸入,例如:select time_to_sec('1 12:00:00');

TIMEDIFF()

不涉及

TIMESTAMP()

不涉及

TIMESTAMPADD()

無限制

TIMESTAMPDIFF()

無限制

TO_DAYS()

無限制

TO_SECONDS()

無限制

UNIX_TIMESTAMP()

無限制

UTC_DATE()

無限制

UTC_TIME()

無限制

UTC_TIMESTAMP()

無限制

WEEK()

無限制

WEEKDAY()

無限制

WEEKOFYEAR()

無限制

YEAR()

無限制

YEARWEEK()

無限制

JSON函數

函數名

是否支援

使用限制

JSON_ARRAY()

無限制

JSON_ARRAY_APPEND()

不涉及

JSON_ARRAY_INSERT()

不涉及

JSON_CONTAINS()

不涉及

JSON_CONTAINS_PATH()

不涉及

JSON_DEPTH()

無限制

JSON_EXTRACT()

無限制

JSON_INSERT()

不涉及

JSON_KEYS()

無限制

JSON_LENGTH()

無限制

JSON_MERGE()

不涉及

JSON_MERGE_PATCH()

僅支援兩個JSON進行合并,合并後JSON的欄位順序可能與MySQL中不同。

JSON_MERGE_PRESERVE()

不涉及

JSON_OBJECT()

無限制

JSON_OVERLAPS()

無限制

JSON_PRETTY()

無限制

JSON_QUOTE()

無限制

JSON_REMOVE()

不涉及

JSON_REPLACE()

不涉及

JSON_SCHEMA_VALID()

不涉及

JSON_SCHEMA_VALIDATION_REPORT()

不涉及

JSON_SEARCH()

不涉及

JSON_SET()

不涉及

JSON_STORAGE_FREE()

不涉及

JSON_STORAGE_SIZE()

不涉及

JSON_TABLE()

不涉及

JSON_TYPE()

不涉及

JSON_UNQUOTE()

不涉及

JSON_VALID()

無限制

JSON_VALUE()

不涉及

MEMBER OF()

不涉及

視窗函數

函數名

是否支援

使用限制

CUME_DIST()

無限制

DENSE_RANK()

無限制

FIRST_VALUE()

無限制

LAG()

無限制

LAST_VALUE()

無限制

LEAD()

無限制

NTH_VALUE()

無限制

NTILE()

無限制

PERCENT_RANK()

無限制

RANK()

無限制

ROW_NUMBER()

無限制

其他限制

DuckDB分析執行個體不支援視圖查詢(View)。