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