【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
表结构:
CREATE TABLE `articles_of_video_day` (
`multiMediaType` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`os` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`clicks_of_today` int(4) NOT NULL,
`all_clicks` int(4) NOT NULL,
`ts` int(4) NOT NULL,
`appVersion` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`sourceType` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`sourceValue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`applang` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
KEY `ts_index` (`ts`),
KEY `idx_os` (`os`),
KEY `idx_m` (`multiMediaType`(50))
) ENGINE=InnoDB
查询语句:
select sum(`clicks_of_today`) as `c59654b6-6dfc-4a62-83e7-ff471c6b16f9` from `articles_of_video_day`
where ( from_unixtime( if(`ts` >9999999999, `ts`/1000, `ts`), '%Y-%m-%d %H:%i:%s')
between
str_to_date('2024-08-03 00:00:00' , '%Y-%m-%d %H:%i:%s')
and
str_to_date('2024-09-01 23:59:59' , '%Y-%m-%d %H:%i:%s') )
and ( `os` in ( 'Android' ) );
tidb 返回:
+--------------------------------------+
| c59654b6-6dfc-4a62-83e7-ff471c6b16f9 |
+--------------------------------------+
| NULL |
+--------------------------------------+
1 row in set, 65535 warnings (2 min 33.08 sec)
warning 显示:
| Warning | 1690 | DECIMAL value is out of range in '(9, 4)' |
mysql 返回:
+--------------------------------------+
| c59654b6-6dfc-4a62-83e7-ff471c6b16f9 |
+--------------------------------------+
| 180 |
+--------------------------------------+
1 row in set (31.34 sec)
我看tidb是支持 from_unixtime 和 if 的,但是两者结合,好像就不行了,请求大家帮忙解惑,多谢。。
大家不要关注烂SQL,只关注为啥返回NULL就行了!!!我知道SQL很烂!!!!