我有一个数据库,其中包含一组人之间发送的一堆消息,每条消息都有一个日期时间格式的时间戳。我正在从该日期时间列中提取时间,并尝试将其与静态时间戳进行比较,以查看每个用户在该时间之后发送了多少条消息。我使用的代码如下:
SELECT sender_id, SUM(CASE WHEN DATE_FORMAT(created_at,'%H:%i:%s')>CAST('17:00:00' AS time) THEN 1 ELSE 0 END) AS no_msgs_afterhours GROUP BY sender_id;
有趣的是,这在 MariaDB 数据库实例中完美运行,但在 MySQL 实例中它给了我这个错误:
错误 1267 (HY000): 非法混合排序规则 (utf8_general_ci,COERCIBLE) 和 (latin1_swedish_ci,NUMERIC) 用于操作“>”
MariaDB 实例版本为 5.5.32,MySQL 实例版本为 5.5.29。这可能是MySQL版本问题吗?我在网上读到 MySQL 4.1.8 及更早版本曾经存在类似的排序规则问题,但这不应该适用于此。