Php 按日期分组日期
我有个问题,找不到解决办法 我有一个简单的电视节目表,如下所示: monday - wednesday : 17.00 tuesday : 14.00; 如果程序不存在,则创建表( id\u程序int非空自动增量主键, 航空日期时间, 标题varchar(50) ); 以及表中的一些行: 2003-10-20 17:00 Factor 2003-10-21 17:00 Factor 2003-10-22 17:00 Factor 2003-10-20 19:00 Form 2003-10-21 14:00 Factor 2003-10-20 17:00系数 2003-10-21 17:00系数 2003-10-22 17:00系数 2003-10-20 19:00表格 2003-10-21 14:00系数 我如何获得因子的结果,比如: monday - wednesday : 17.00 tuesday : 14.00; 星期一至星期三:17.00 星期二:14:00;Php 按日期分组日期,php,sql,Php,Sql,我有个问题,找不到解决办法 我有一个简单的电视节目表,如下所示: monday - wednesday : 17.00 tuesday : 14.00; 如果程序不存在,则创建表( id\u程序int非空自动增量主键, 航空日期时间, 标题varchar(50) ); 以及表中的一些行: 2003-10-20 17:00 Factor 2003-10-21 17:00 Factor 2003-10-22 17:00 Factor 2003-10-20 19:00 Fo
有可能在SQL中实现这一点,还是需要在PHP中获取数据?我认为要在一个查询中获得您想要的数据并不容易。但我得到了一个几乎是你想要的结果:
select date_format(`air`,'%d-%b %h:%i') from programs
SELECT TIME(air), title, GROUP_CONCAT(DAYOFWEEK(air))
FROM programs WHERE title = 'Factor'
GROUP BY TIME(air)
这给了我以下结果:
TIME(air) title GROUP_CONCAT(DAYOFWEEK(air))
-------------------------------------------------
14:00:00 Factor 3
17:00:00 Factor 2,3,4
有了这个结果,您就可以轻松地利用php获得所需的结果。类似“周一、周三、周五、周六”的结果也可以用它来实现。这并不能像MSSQL中那样准确地回答问题。我知道有很多人会这么做
declare @tempTable TABLE (dt_timeOfProgram datetime, str_name varchar(10));
insert into @tempTable values
('2003-10-20 17:00', 'Factor'),
('2003-10-21 17:00', 'Factor'),
('2003-10-22 17:00', 'Factor'),
('2003-10-20 19:00', 'Form'),
('2003-10-21 14:00', 'Factor');
select
REPLACE(REPLACE(REPLACE(dow, '</dow><dow>', ','), '<dow>',''),'</dow>', '') as DOW
, [time]
, [showName]
from ( select distinct
CAST(dt_timeOfProgram as time) as [time],
str_name [showName],
( SELECT DATENAME(dw, t1.dt_timeOfProgram) as [dow]
FROM @tempTable t1
where t1.str_name=t2.str_name
and CAST(t1.dt_timeOfProgram as time) = CAST(t2.dt_timeOfProgram as time)
order by t1.dt_timeOfProgram
for XML PATH('')) [dow]
from @tempTable t2) as t
这是一个相当草率的工作。我决不会在实时应用程序中这样做。此逻辑将由业务逻辑而不是数据库处理
数据库资源通常是可伸缩的。因此,最终,您希望尽可能少地使用它们
祝您好运您可以使用
选择工作日(air)
您使用的SQL server是什么风格的?从程序中选择id\u程序作为id,title,time(air)作为time,dayname(air)作为dayOfWeek,其中title='Factor'按时间顺序排列代码>这是我获取程序及其时间的方式,但如果存在,请按照我要求的方式进行分组?您不会按照您想要的方式对其进行分组。因为如果Factor在周一17:00启用,但下周一不启用呢?如果您愿意只关注接下来的7天,这是可能的,但在PHP或任何服务器端(甚至客户端)脚本中会容易得多。Benjamin Paap使用3行代码得到了几乎相同的结果。您是正确的。遗憾的是,我使用MSSQL解决了这个问题。据我所知,那里没有MySQLs group_concat,anwyays.thnx!我会考虑你的建议。如果这是你的答案,你应该接受它作为正确的答案。