繁体   English   中英

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

[英]Trying to find this day last year. Ex: Get the 1st Friday of October, not the October the 4th

我不确定即使不使用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就能做到吗? 如果是这样,我将非常感谢您的帮助。

谢谢。

您可能正在寻找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

也许这会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM