MySQL查找当月经过的周数

时间:2015-09-02 19:33:21

标签: mysql

问题

是否可以使用MySQL查询查找当月的周数?

如果您回答上述问题,那么您已回答了我的问题。但是,由于不包括上下文,我之前一直被投票,所以......

背景(警告:会让您感到困惑)
我建议不再阅读

由于我们在应用程序中编写了一个MySQL解析器,因此我必须采用编写查询的方式。

以下是该方案:

我需要平均一个员工在一个月内每周工作的小时数;但是,我必须通过生成查询返回的列来解决这个问题,然后可以将其求和以得到平均值(是的,这是一个满嘴)。

这就是我的意思(和一次尝试):

SELECT ets.*, (ets.hours/4) AS AVG_HOURS 
FROM employee_timesheet AS ets 
WHERE ets.date_worked >= (NOW() - INTERVAL 1 MONTH)

是的,WHERE条款不准确,也必须改变(但这是下一步)。

然后应用程序SUMS(avg_hours)。考虑每个ets记录包含每天工作的小时数,将(每天工作时间/除以(周数的浮动表示)在本月)中,我应该通过对该部门的结果进行求和来获得每个月的平均每周工作量。

用伪代码表示逻辑

SUM(days_hours/number_of_weeks)

3 个答案:

答案 0 :(得分:1)

您可以使用DATEDIFF功能

public class WorkOrderJson<T>
{
    public Geometry<T> geometry { get; set; }

    public WorkOrderJson<List<T>> Promote()
    {
        var temp = new WorkOrderJson<List<T>>();
        temp.geometry = geometry.Promote();
        return temp;
    }
}
public class Geometry<T>
{
    public T coordinates { get; set; }

    public Geometry<List<T>> Promote()
    {
        var temp = new Geometry<List<T>>();
        temp.coordinates = new List<T>(){ coordinates };
        return temp;
    }
}

public List<WorkOrder<List<List<double>>>> Deserialize(string x)
{
    try
    {
        return new JavaScriptSerializer().Deserialize<List<WorkOrderJson<List<List<double>>>>>(x);
    }
    catch(InvalidOperationException ex)
    {
        return new JavaScriptSerializer().Deserialize<List<WorkOrderJson<List<double>>>>(x).Select(workOrder => workOrder.Promote());
    }
}

它应该返回两个日期之间的日期

https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff

答案 1 :(得分:0)

要回答这个问题,是的,您可以使用SQL查找一个月内的周数

datepart(week, date). 

如果您需要当前月份的周数,可以

Datepart(week, getdate())

以下是DATEPART

的更多信息

要获得本月的第一天,您可以使用

DATEADD(month, DATEDIFF(month, 0, @mydate), 0)

答案 2 :(得分:0)

好吧,我明白了。如果我想获得当月经过的当前周数,我可以:

http://localhost:6060/pkg/your-code