1

如果不使用 PHP,我什至不确定这是否可行,但我很想尝试。

我有一个看起来像这样的数据库(一堆其他的东西,但这就是所有相关的:

Date_Day(是从 1 到 31 的范围,没有尾随 0)

Date_Month(是从一月到十二月的范围,不是数字)

Date_Year(是 4 位格式的年份,例如:2005)

Total(带小数点后两位的数字)

我知道日期的存储方式很糟糕,但这是给我的数据库。如果有一个查询我可以使用这些列来创建一个实际的 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?如果是这样,我将非常感谢您的帮助。

谢谢你。

4

2 回答 2

0

您可能正在寻找DAYOFWEEK()

返回日期的工作日索引(1 = 星期日,2 = 星期一,...,7 = 星期六)。这些索引值对应于 ODBC 标准。

mysql> SELECT DAYOFWEEK('2007-02-03');
     > 7
于 2013-10-04T07:56:02.867 回答
0
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

也许这会有所帮助

于 2013-10-04T09:18:47.010 回答