我不确定这在不使用PHP的情况下是否可行,但我很想尝试。
我有一个看起来像这样的数据库(一堆其他东西,但这就是所有相关的:
Date_Day
(从 1 到 31 的范围,没有尾随 0(
Date_Month
(是 1 月至 12 月的范围,不是数字(
Date_Year
(是 4 位格式的年份,例如:2005(
Total
(小数点后 2 位的数字(
我知道日期的存储方式很糟糕,但这是我得到的数据库。如果有一个查询,我可以使用这些列来创建实际的 DATETIME 列,我很乐意这样做,我只是不知道该查询是什么样子的。
我有这个查询,它返回以前所有年份当天的总销售额:
SELECT
Date_Year, Date_Month, SUM(Total)
FROM
tablename
WHERE
Date_Year < YEAR(CURDATE())
AND
Date_Month = MONTHNAME(CURDATE())
AND
Date_Day = DAY(CURDATE())
GROUP BY
Date_Year, Date_Month
因此,如果我今天运行这个,我会得到所有往年 10 月 4 日的每日总数。问题在于,在销售中,这对比较增长不是很有帮助。我真正需要的是往年10月第一个星期五的每日总数。
这是否可能不必依赖 PHP?如果是这样,我将非常感谢您的帮助。
谢谢。
你可能正在寻找 DAYOFWEEK((
返回日期的工作日索引(1 = 星期日,2 = 星期一,..., 7 = 星期六(。这些索引值对应于 ODBC 标准。
mysql> SELECT DAYOFWEEK('2007-02-03');
> 7
SELECT
Date_Year, Date_Month, SUM(Total)
FROM
tablename
WHERE
Date_Year < YEAR(CURDATE())
AND
Date_Month = MONTHNAME(CURDATE())
AND
Date_Day = DAY(LAST_DAY(CURDATE()) - ((28 + WEEKDAY(LAST_DAY(CURDATE())) - 4)))
GROUP BY
Date_Year, Date_Month
也许这会有所帮助