为了更快的定位您的问题,请提供以下信息,谢谢
【详述】
- 建表语句:
CREATE TABLE `gjc_test_dws_invty_f` (
`group_skey` bigint(20) NULL COMMENT "集团skey",
`co_skey` bigint(20) NULL COMMENT "公司skey",
`org_skey` bigint(20) NULL COMMENT "组织skey",
`eff_end_date` bigint(20) NULL COMMENT "生效截止日期",
`last_stkin_date` datetime NULL COMMENT "最近入库日期",
`last_stkou_date` datetime NULL COMMENT "最近出库日期"
) ENGINE=OLAP
DUPLICATE KEY(`group_skey`, `co_skey`, `org_skey`)
COMMENT "库存月结档"
DISTRIBUTED BY HASH(`group_skey`, `co_skey`) BUCKETS 3
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"enable_persistent_index" = "false",
"replicated_storage" = "true",
"compression" = "LZ4"
);
- 数据样例:
mysql> select * from gjc_test_dws_invty_f limit 10;
+------------+---------+----------+--------------+---------------------+---------------------+
| group_skey | co_skey | org_skey | eff_end_date | last_stkin_date | last_stkou_date |
+------------+---------+----------+--------------+---------------------+---------------------+
| 3 | 4 | 547 | 29991231 | NULL | NULL |
| 3 | 4 | 547 | 29991231 | NULL | NULL |
| 3 | 4 | 547 | 29991231 | NULL | NULL |
| 3 | 4 | 547 | 29991231 | 2025-08-25 00:00:00 | NULL |
| 3 | 4 | 547 | 29991231 | NULL | 2025-11-13 00:00:00 |
| 3 | 4 | 547 | 29991231 | NULL | 2025-07-10 00:00:00 |
| 3 | 4 | 547 | 29991231 | NULL | NULL |
| 3 | 4 | 547 | 29991231 | NULL | NULL |
| 3 | 4 | 547 | 29991231 | NULL | NULL |
| 3 | 4 | 547 | 29991231 | NULL | NULL |
+------------+---------+----------+--------------+---------------------+---------------------+
- 查询 sql:
select datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(last_stkin_date,'%Y-%m-%d'))-datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(now(),'%Y-%m-%d')) as aaa
,datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(last_stkin_date,'%Y-%m-%d')) as main_eff_days
,datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(now(),'%Y-%m-%d')) as real_eff_days
,last_stkin_date
,last_stkou_date
,eff_end_date ,
DATE_FORMAT(eff_end_date,'%Y-%m-%d')
from (
select if(length(last_stkin_date)>0,last_stkin_date,date_sub(now(),INTERVAL floor(rand()*1000) day)) as last_stkin_date
,if(length(last_stkou_date)>0,last_stkou_date,date_sub(now(),INTERVAL floor(rand()*1000) day)) as last_stkou_date
,eff_end_date
from gjc_test_dws_invty_f
)t
where datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(last_stkin_date,'%Y-%m-%d'))-datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(now(),'%Y-%m-%d')) >5
and datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(last_stkin_date,'%Y-%m-%d'))-datediff(DATE_FORMAT(eff_end_date,'%Y-%m-%d'),DATE_FORMAT(now(),'%Y-%m-%d')) <=50
;
- 查询结果
很明显 aaa 的值存在 非5-50 之间的数据。
同样的表结构放
到 hive 里,用相同的 sql 查询,是没有问题的
【背景】做过哪些操作?
【业务影响】查询结果不对
【是否存算分离】否
【StarRocks版本】3.2.11 和 3.3.18 均存在此问题
【集群规模】例如:1fe+1be
【机器信息】CPU虚拟核/内存/网卡,例如:48C/64G/万兆
【联系方式】StarRocks社区群17-Golden
【附件】
数据文件如下:
gjc_test_dws_invty_f.csv (40.9 KB)
