除了这两种方法之外,还有其他方法进行时间比较么?
select * from tb_customer where c_born_date > ‘2020-02-02’
select * from tb_customer where TIMESTAMPDIFF(YEAR, c_born_date, now()) <18
除了这两种方法之外,还有其他方法进行时间比较么?
select * from tb_customer where c_born_date > ‘2020-02-02’
select * from tb_customer where TIMESTAMPDIFF(YEAR, c_born_date, now()) <18
问题就在这里了,我这边客户生产环境有问题,测试环境、演示环境、本地环境都没问题。。。 所以现在想问问,除了这两种报错的时间比较方式,还有其他时间比较方式么?
我这边是v3.1.0,不是beta
稍等,这边看下
和这个有问题么?客户那边是空,测试环境开始不是空,但我也改成空了,也没有报错
1、相同数据,在测试环境没问题。
2、sql_mode不一致,生产环境为空。 但是测试环境也改为空之后,执行语句没有报错。
现在我想找个替代方法,不使用timestampdiff来判断时间,有其他方式推荐么?
麻烦反馈下两个sql的执行计划,报错和不报错的.
执行 explain sql ,多谢
抱歉,我可能没有表达清楚,是生产环境和测试环境相同的sql,不是一个报错,一个不报错,麻烦反馈下信息,多谢。
看执行计划应该统计信息有问题
请查看SHOW STATS_HEALTHY where table_name=‘tb_customer_copy’ ; 检查健康度
如果健康度比较低,在业务低峰期执行收集统计信息的命令 ANALYZE TABLE schema.table_name; 看看能否走正确的执行计划
对于走错执行计划报错的问题,我们再看下,多谢。
这个表是我刚新copy出来的,我看看
healthy的值是0,是什么情况
我屈服了,我准备换种方式计算年龄:
SELECT
ROUND(DATEDIFF(CURDATE(), @birthday)/365.2422)
insert into mysql.expr_pushdown_blacklist values(‘timestampdiff’);
admin reload expr_pushdown_blacklist;
好的,谢谢。 我暂时换一种写法就可以,这里对计算结果的准确性要求不是很高。再次感谢。
麻烦了,多谢反馈
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。