gpt4 book ai didi

mysql - SparkSQL 在 where(filter) 子句中的时间戳之间(V.S. 在 MySQL 中)

转载 作者:行者123 更新时间:2023-11-29 17:09:18 25 4
gpt4 key购买 nike

描述:
我有一个带有时间戳列的表,我想获取特定时间窗口中时间戳的值的数量。

我的代码如下所示:

String startTime = "2018-08-08 00:00:00";
String endTime = "2018-08-08 23:59:59";
productDF.where("CREATETIME >= '" + startTime + "' AND CREATETIME <= '" + endTime + "'").count();

我还尝试了 Between...and...句子;还有:

productDF.where(unix_timestamp(col("CREATETIME"), "yyyy-mm-dd hh:mm:ss")
.cast("timestamp")
.between(
Timestamp.valueOf(startTime),
Timestamp.valueOf(endTime)
)).count();

我得到的结果是6843

但是当我使用Navicat操作sql语句时:

SELECT COUNT(*) FROM my_table 
WHERE CREATETIME BETWEEN '2018-08-08 00:00:00' and '2018-08-08 23:59:59';

显示7689

问题:
我想知道为什么我在 Spark 和 Mysql 中得到不同的结果......我在这里缺少什么?

最佳答案

问题解决了!

由于TIMEZONE而发生问题。
在spark环境中,它从_unixtime获取时区。所以需要设置配置。

.config("spark.sql.session.timeZone", "UTC")

但是我仍然不明白为什么spark sql session 流系统时区而不是仅仅从列中选择......

关于mysql - SparkSQL 在 where(filter) 子句中的时间戳之间(V.S. 在 MySQL 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com