试图去年找到这一天。例如:10月的第一个星期五,而不是10月4日

时间:2013-10-04 07:38:57

标签: mysql sql

如果不使用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吗?如果是这样,我将非常感谢你的帮助。

谢谢。

2 个答案:

答案 0 :(得分:0)

您可能正在寻找 DAYOFWEEK()

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

mysql> SELECT DAYOFWEEK('2007-02-03');
     > 7

答案 1 :(得分: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

也许这会有所帮助