我在mysql的varchar列中,日期以d / m / Y格式存储,以为较旧的输入仅为m / Y。
我查询选择最早的记录:
SELECT expire
FROM logs
WHERE log_id = :logid AND STR_TO_DATE(expire, '%d/%m/%Y') > NOW()
ORDER BY STR_TO_DATE(expire, '%d/%m/%Y') ASC LIMIT 0,1"
但是,如果日期以旧格式存储且数据库中不带“ d”(如m / Y)的旧格式,则不会返回任何内容,如何返回带AND且不带d的行?
最佳答案
您可以检查str的长度
SELECT expire
FROM logs
WHERE log_id = :logid
AND CASE length(expire)
WHEN 10 THEN STR_TO_DATE(expire, '%d/%m/%Y') > NOW()
WHEN 7 THEN STR_TO_DATE(expire, '%m/%Y) > NOW()
END
ORDER BY STR_TO_DATE(expire, '%d/%m/%Y') ASC LIMIT 0,1;
关于mysql - MySQL比较自定义格式的日期到现在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38503765/