将结果放在表格上,除以一周中的所有日期

时间:2014-10-26 17:18:03

标签: c# mysql date webmatrix

我正在尝试将数据库的记录放到桌子上,但是我正在努力,因为我必须在工作日将它们分开,并且在每个工作日它们可以在早晨,下午,晚上或整天。 enter image description here

在上图中,我想要显示信息。澄清

第1项 - 工作日(星期一 - 2014年10月27日)等等。

然后在第二列(Manhã= Morning),我想展示那天早上插入的所有内容。

(例如:星期一早上,可以有4个条目,但在下午它只能有1个,而且在夜晚只有0个。)

该表上方是一周中每天的webgrid结果。我所做的是:

"SELECT DISTINCT dataOcorrencia FROM relatoriosSemanais WHERE semana= '43'" 

并把它放在一个网页上,从第43周开始,我就可以得到所有工作日,是的,这一周将是动态的。

但现在我不知道如何获得记录,就像我告诉你们的那些人一样。

我的数据库有一周,一天(早上,下午,晚上,下午),一天。

不知道你是否能理解我的问题。

27  26/10/2014 12:30    26/10/2014 13:58    Mobile  Outros  Alerta CC3  Clientes a ficar com carregamentos em processamento.    FECHADO 43  Sim Manhã   Criticidade Muito Elevada   Relatório SI        26-10-2014
28  26/10/2014 09:39    26/10/2014 11:45    Serviços Online Área de Cliente Alerta CC3  Área de Cliente indisponível    FECHADO 43  Sim Tarde   Criticidade Muito Elevada   Relatório SI        26-10-2014
29  26/10/2014 09:39    26/10/2014 11:45    Serviços Online Área de Cliente Alerta CC3  Área de Cliente indisponível    FECHADO 43  Sim Manhã   Criticidade Regular Relatório SI        26-10-2014

1 个答案:

答案 0 :(得分:1)

要逐周工作,您需要一个简单的公式,将任何DATETIME值转换为前一个星期日的日期。这可以按如下方式完成

FROM_DAYS(TO_DAYS(record_date) -MOD(TO_DAYS(record_date) -1, 7))

(如果您的周数从星期一开始,请使用-2代替-1。)

为什么这样?因为您可以使用此类WHERE子句选择一周的数据。

 WHERE record_date >= FROM_DAYS(TO_DAYS(NOW()) -MOD(TO_DAYS(NOW()) -1, 7)) - INTERVAL 1 WEEK
   AND record_date <  FROM_DAYS(TO_DAYS(NOW()) -MOD(TO_DAYS(NOW()) -1, 7))

使用该设计模式,我建议您尝试使用这样的设置来设置表格。您还没有告诉我们您的列的名称,因此无法为您提供完美的查询。

SELECT DATE_FORMAT(DATE(record_date),'%W') AS weekday,
       SUM(Sim = 'Sim Manhã') AS `Manhã`,
       SUM(Sim = 'Sim Tarde') AS `Tarde`,
       SUM(Sim = 'Sim Noite') AS `Noite`,
       SUM(Sim = 'Sim Todo o Dia') AS 'Todo o Dia'
  FROM dataOcorrencia 
 WHERE record_date >= FROM_DAYS(TO_DAYS(NOW()) -MOD(TO_DAYS(NOW()) -1, 7)) - INTERVAL 1 WEEK
   AND record_date <  FROM_DAYS(TO_DAYS(NOW()) -MOD(TO_DAYS(NOW()) -1, 7))
 GROUP BY DATE(record_date)

这是有效的,因为如果列Sim = 'Sim Manhã'的值为1,则值Sim'Sim Manhã',否则为零。因此,对1值求和会计算条件为真的行。

还有一件事:DATE_FORMAT(...'%W')会产生星期几的名字。如果您在打开连接后立即向MySQL发出此命令,那么您将使用葡萄牙语获取这些日期名称。

SET lc_time_names = 'pt_BR'