首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

MySQL 錯誤 1582:STR_TO_DATE 參數個數錯誤解析與修正

     編輯:DB2 教學

MySQL 錯誤 1582:STR_TO_DATE 參數個數錯誤解析與修正

執行 SQL 時遇到 Incorrect parameter count in the call to native function 'str_to_date',主因是 STR_TO_DATE 缺少第二個參數(格式字串)。

一、錯誤 SQL

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' 等

三、修正後 SQL

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';

四、同類常見錯誤

五、最佳實務

  1. 所有日期字串轉換**明確指定格式**,避免隱含轉換因 locale/版本差異失效。
  2. 優先使用 DATE/DATETIME 型別儲存,應用層傳參數而非字串拼接 SQL。
  3. 開發階段開啟 sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 盡早暴露問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數正確用法常見錯誤
STR_TO_DATESTR_TO_DATE('2015-01-01','%Y-%m-%d')STR_TO_DATE('2015-01-01')
DATE_FORMATDATE_FORMAT(date,'%Y-%m-%d')DATE_FORMAT(date)
UNIX_TIMESTAMPUNIX_TIMESTAMP('2015-01-01')UNIX_TIMESTAMP() 當參數為 NULL 時返回 NULL