我设法从当前星期中选择数据,但是星期本身从星期日开始,这对我来说不是正确的格式,应该从星期一开始。我正在使用MySQL查询数据。
SELECT IFNULL(SUM(rendeles_dbszam),0) as eladott_pizzak_szama
FROM rendeles
WHERE WEEK(rendeles_idopont) = WEEK(CURRENT_DATE())
答案 0 :(得分:0)
mysql中的'Week'有2个输入:日期和星期类型。默认情况下,它等于0。这意味着星期从星期日开始。尝试以下代码:
SELECT IFNULL(SUM(rendeles_dbszam),0) as eladott_pizzak_szama FROM rendeles WHERE WEEK(rendeles_idopont) = WEEK(CURRENT_DATE(),1)
答案 1 :(得分:-1)
您可以使用这个小公式来获取任何给定DATE,DATETIME或TIMESTAMP对象的星期一开始。
FROM_DAYS(TO_DAYS(datestamp) -MOD(TO_DAYS(datestamp) -2, 7))
我喜欢在这样定义的名为TRUNC_MONDAY(datestamp)
的存储函数中使用它。
DELIMITER $$
DROP FUNCTION IF EXISTS TRUNC_MONDAY$$
CREATE
FUNCTION TRUNC_MONDAY(datestamp DATETIME)
RETURNS DATE DETERMINISTIC NO SQL
COMMENT 'preceding Monday'
RETURN FROM_DAYS(TO_DAYS(datestamp) -MOD(TO_DAYS(datestamp) -2, 7))$$
DELIMITER ;
那么你可以做这样的事情
SELECT IFNULL(SUM(rendeles_dbszam),0) as eladott_pizzak_szama
FROM rendeles
WHERE TRUNC_MONDAY(rendeles_idopont) = TRUNC_MONDAY(CURRENT_DATE())
或什至获得一份涵盖前八个星期和当前星期的报告。
SELECT SUM(rendeles_dbszam) as eladott_pizzak_szama,
TRUNC_MONDAY(rendeles_idopont) as week_beginning
FROM rendeles
WHERE rendeles_idopont >= TRUNC_MONDAY(CURDATE()) - INTERVAL 8 WEEK
AND rendeles_idopoint < TRUNC_MONDAY(CURDATE()) + INTERVAL 1 WEEK
GROUP BY TRUNC_MONDAY(rendeles_idopont)
我特别喜欢这种TRUNC_MONDAY()
方法,因为它即使在包含元旦的日历周中也能正常工作。
(如果您想TRUNC_SUNDAY()
将公式中的-2
更改为-1
。)