mysql - 如何选择过去 4 整周(周日到周六)的数据?

标签 mysql

以前,我将查询设置为获取过去 4 周的数据,但它没有计算整周,这导致依赖于查询数据的 Excel 数据透视表失效。

我将其更改为此,现在它仅将我的数据减少到过去两周。

我怀疑 AND 语句有错误。有人可以确认一下吗?

WHERE
    BalanceDay >= DATE(CONVERT_TZ(CURRENT_TIMESTAMP, 'UTC', Mapping.DEFAULT_TIMEZONE) - INTERVAL DAYOFWEEK(CURRENT_TIMESTAMP) - 1 DAY - INTERVAL 4 WEEK)
    AND BalanceDay <=  DATE(CONVERT_TZ(CURRENT_TIMESTAMP, 'UTC', Mapping.DEFAULT_TIMEZONE) - INTERVAL DAYOFWEEK(CURRENT_TIMESTAMP) - 1 DAY - INTERVAL 3 WEEK) + INTERVAL 6 DAY

这是我之前的情况,它确实提取了 4 周,但没有提取完整周(即,如果它在周五运行,我会得到除 28 天数据之外的其他数据) ):

WHERE
    BalanceDay >= CONVERT_TZ(CURRENT_DATE, 'UTC', Mapping.DEFAULT_TIMEZONE) -  INTERVAL 4 WEEK

最佳答案

嗯,我不明白你的查询的真正意义。但运行后,该查询获取了过去四个星期的信息:

WHERE
BalanceDay >= DATE(CONVERT_TZ(CURRENT_TIMESTAMP, 'UTC', Mapping.DEFAULT_TIMEZONE) - INTERVAL DAYOFWEEK(CURRENT_TIMESTAMP) - 1 DAY - INTERVAL 4 WEEK)
AND DATE(CONVERT_TZ(CURRENT_TIMESTAMP, '+00:00', '+03:00') - INTERVAL DAYOFWEEK(CURRENT_TIMESTAMP) - 1 DAY - INTERVAL 1 WEEK) + INTERVAL 6 DAY

不过,请考虑使用 DATE_ADD 和 DATE_SUB。

祝你好运:)

关于mysql - 如何选择过去 4 整周(周日到周六)的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573612/

相关文章:

mysql - 同时使用 Group 、 Order by 和 Random 进行 SQL 查询

sql - mySQL返回每个类别的前5名

mysql - sql从一个表插入数据到另一个表

mysql - 如果我在 MySQL 中(而不是在应用程序中)进行加密/解密,是否真的会记录明文?

php - mysqldump 以及如何让它工作?

php - 使用 PHP 从 MySQL 中的表中删除特定行

php - 如何比较mysql中的两个结果集?

php - 只创建一次表?

php - PDO 查询不显示数据

mysql - 表中每个数据值的行