首页 > 解决方案 > 如何选择过去 4 整周的数据(周日到周六)?

问题描述

以前我将查询设置为过去 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

标签: mysql

解决方案


好吧,我不了解您查询的真正业务。但在运行它之后,这个查询得到了最后四个星期:

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。

祝你好运 :)


推荐阅读