mysql - Sql 语句在 Maria DB 和 Mysql 上得到不同的结果
问题描述
表结构是:
+---------------+-------------+----------------+-----------+--------------------------+
| column_name | is_nullable | column_default | data_type | character_maximum_length |
+---------------+-------------+----------------+-----------+--------------------------+
| id | NO | NULL | int | NULL |
| name | NO | NULL | varchar | 100 |
| last_start | YES | NULL | datetime | NULL |
| y | YES | NULL | varchar | 4 |
| m | YES | NULL | varchar | 2 |
| d | YES | NULL | varchar | 2 |
| h | YES | NULL | varchar | 2 |
| i | YES | NULL | varchar | 2 |
| s | YES | NULL | varchar | 2 |
+---------------+-------------+----------------+-----------+--------------------------+
表中数据为:
+----+-------------------------+---------------------+------+------+------+------+------+------+
| id | name | last_start | y | m | d | h | i | s |
+----+-------------------------+---------------------+------+------+------+------+------+------+
| 55 | daemon_service_service | 2019-08-21 11:05:59 | NULL | NULL | NULL | NULL | NULL | NULL |
| 56 | daemon_ohrclean_service | 2019-08-21 10:47:59 | NULL | NULL | NULL | 05 | 00 | 00 |
| 57 | daemon_mqclean_service | 2019-08-21 10:47:59 | NULL | NULL | NULL | NULL | NULL | NULL |
| 58 | daemon_loggrab_service | 2019-08-21 10:59:59 | NULL | NULL | NULL | NULL | NULL | NULL |
| 59 | daemon_test1 | 2019-08-20 12:26:31 | NULL | NULL | 20 | 11 | 25 | 30 |
| 60 | daemon_test2 | 2019-08-20 12:26:31 | NULL | NULL | 20 | 11 | 25 | 30 |
| 61 | daemon_test3 | 2019-08-20 12:26:31 | NULL | NULL | 20 | 11 | 25 | NULL |
+----+-------------------------+---------------------+------+------+------+------+------+------+
SQL 语句为:
SELECT t.*, concat(ifnull(`y`,date_format(now(),'%Y')),'-',
ifnull(`m`,date_format(now(),'%m')),'-',
ifnull(`d`,date_format(now(),'%d')),' ',
ifnull(`h`,date_format(now(),'%H')),':',
ifnull(`i`,date_format(now(),'%i')),':',`s`)
FROM `daemon_service` t
where
`s` is not null and
last_start< concat(ifnull(`y`,date_format(now(),'%Y')),'-',
ifnull(`m`,date_format(now(),'%m')),'-',
ifnull(`d`,date_format(now(),'%d')),' ',
ifnull(`h`,date_format(now(),'%H')),':',
ifnull(`i`,date_format(now(),'%i')),':',`s`)
我有两个sql环境,一个是MariaDB 10.3.15
,一个是Mysql 5.7.24
。
当我在上面运行sql时MariaDB 10.3.15
,结果返回是正确的,这没什么。
但是当我运行 sql on 时Mysql 5.7.24
,它返回 id 59 和 60,这是不正确的。
结果如下:
+----+-------------------------+---------------------+------+------+------+------+------+------+---------------------+
| id | name | last_start | y | m | d | h | i | s | concat(ifnull(`y`...|
+----+-------------------------+---------------------+------+------+------+------+------+------+---------------------+
| 59 | daemon_test1 | 2019-08-20 12:26:31 | NULL | NULL | 20 | 11 | 25 | 30 | 2019-08-20 11:25:30 |
| 60 | daemon_test2 | 2019-08-20 12:26:31 | NULL | NULL | 20 | 11 | 25 | 30 | 2019-08-20 11:25:30 |
+----+-------------------------+---------------------+------+------+------+------+------+------+---------------------+
我的问题是:
- 是什么导致了这个问题?
- 如何使它正确
Mysql 5.7.24
?
解决方案
推荐阅读
- amazon-web-services - AWS Cognito 和自定义角色
- c++ - 如何在 c++ builder 中动态声明 c# dll 函数
- node.js - Sequelize 和在关联中指定外键的问题
- jquery - toggleClass:删除当前类并添加一个新类
- postman - 邮递员:如何存储响应中的数组并使用它来发出多个请求
- python - 有没有办法在同一个 conda 环境中安装 python 3 和 python 2?
- data-structures - 非结构化数据方法和解决方案
- python - 如何让pocketsphinx识别关键词
- excel - 如果 K 列中的单元格返回 FALSE,则清除 B 列中的单元格
- java - 将 MySQL 数据库的默认日期选择器值设置为 NULL