執行 SQL 時遇到 Incorrect parameter count in the call to native function 'str_to_date',主因是 STR_TO_DATE 缺少第二個參數(格式字串)。
SELECT t.name,
DATE_FORMAT(STR_TO_DATE('2015'), '%Y') AS statisDate, -- 錯誤:缺格式
ROUND(IFNULL(SUM(t.amount),0),3) AS amount
FROM t_stu_info t
WHERE DATE_FORMAT(t.statisDate,'%Y') = '2015'
UNION ALL
SELECT t.name,
DATE_FORMAT(STR_TO_DATE('2014'), '%Y') AS statisDate,
ROUND(IFNULL(SUM(t.amount),0),3) AS amount
FROM t_stu_info t
WHERE DATE_FORMAT(t.statisDate,'%Y') = '2014';
STR_TO_DATE(str, format) -- str: 日期字串 -- format: 格式字串,如 '%Y', '%Y-%m-%d', '%Y%m%d' 等
SELECT t.name,
DATE_FORMAT(STR_TO_DATE('2015','%Y'), '%Y') AS statisDate, -- 補上 '%Y'
ROUND(IFNULL(SUM(t.amount),0),3) AS amount
FROM t_stu_info t
WHERE DATE_FORMAT(t.statisDate,'%Y') = '2015'
UNION ALL
SELECT t.name,
DATE_FORMAT(STR_TO_DATE('2014','%Y'), '%Y') AS statisDate,
ROUND(IFNULL(SUM(t.amount),0),3) AS amount
FROM t_stu_info t
WHERE DATE_FORMAT(t.statisDate,'%Y') = '2014';
| 函數 | 正確用法 | 常見錯誤 |
|---|---|---|
| STR_TO_DATE | STR_TO_DATE('2015-01-01','%Y-%m-%d') | STR_TO_DATE('2015-01-01') |
| DATE_FORMAT | DATE_FORMAT(date,'%Y-%m-%d') | DATE_FORMAT(date) |
| UNIX_TIMESTAMP | UNIX_TIMESTAMP('2015-01-01') | UNIX_TIMESTAMP() 當參數為 NULL 時返回 NULL |