场景:
Kettle执行SQL查询报错:Caused by: java.sql.SQLException: Zero date value prohibited
,如图:
但是在SQL工具里正常,如图:
只是显示 0000-00-00 00:00:00
解决:
有两种解决办法:
1)在数据库连接的URL后面加上&zeroDateTimeBehavior=convertToNull
spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
2)将 0000-00-00 00:00:00 转为NULL
SELECT so.id,
GROUP_CONCAT(ad.djbh) AS d_zd_zdbh,
IF(GREATEST(
COALESCE(ad.fyfssj, STR_TO_DATE('0000-00-00', '%Y-%m-%d')),
COALESCE(ad.fyjfsj, STR_TO_DATE('0000-00-00', '%Y-%m-%d')),
COALESCE(ad.fyjssj, STR_TO_DATE('0000-00-00', '%Y-%m-%d'))
) = '0000-00-00 00:00:00', NULL, GREATEST(
COALESCE(ad.fyfssj, STR_TO_DATE('0000-00-00', '%Y-%m-%d')),
COALESCE(ad.fyjfsj, STR_TO_DATE('0000-00-00', '%Y-%m-%d')),
COALESCE(ad.fyjssj, STR_TO_DATE('0000-00-00', '%Y-%m-%d'))
)) AS d_zd_sksj,
IF(LOCATE(',', GROUP_CONCAT(ad.je SEPARATOR ',')) > 0,
SUBSTRING_INDEX(GROUP_CONCAT(ad.je SEPARATOR ','), ',', 1) +
SUBSTRING_INDEX(GROUP_CONCAT(ad.je SEPARATOR ','), ',', -1), ad.je) d_zd_skje
FROM yy_sj_jd_keyu_sale_detail so,
ys_sj_jd_keyu_zdmx AS ad
WHERE so.zdysdh = ad.ddbh
AND SUBSTRING_INDEX(so.yszddh, ':', -1) = ad.spbh;