常用记录:日期字符串完整,所以没有发现细节点
<if test="beginTime != null and beginTime != ''">and date_format(baw.create_time,'%Y%m%d') >= date_format(#{beginTime},'%Y%m%d')</if><if test="endTime != null and endTime != ''">and date_format(baw.create_time,'%Y%m%d') <= date_format(#{endTime},'%Y%m%d')</if>
日期函数不完整对比
在 SQL 中,date_format 和 year 函数的使用需要确保输入的日期字符串是有效的日期格式。如果日期字符串不完整,可能会导致解析错误或意外结果。
SELECT date_format('2024-10', '%Y'); // 不完整
SELECT date_format('2024-10-10', '%Y'); //2024
SELECT year('2024-10-1'); //2024
SELECT year('2024-10'); // 不完整
SELECT year(STR_TO_DATE('2024-10','%Y'));
解决日期不完整
STR_TO_DATE 函数可以将字符串转换为日期,并且可以处理不完整的日期字符串。
-- 使用 STR_TO_DATE 函数处理不完整日期
SELECT date_format(STR_TO_DATE('2024-10', '%Y-%m'), '%Y'); -- 输出 '2024'
SELECT date_format(STR_TO_DATE('2024-10-10', '%Y-%m-%d'), '%Y'); -- 输出 '2024'SELECT year(STR_TO_DATE('2024-10-01', '%Y-%m-%d')); -- 输出 2024
SELECT year(STR_TO_DATE('2024-10', '%Y-%m')); -- 输出 2024