Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询数据未正确显示_Mysql - Fatal编程技术网

mysql查询数据未正确显示

mysql查询数据未正确显示,mysql,Mysql,我有一个网站,客户端将事件信息存储到数据库中。。。真的很简单 问题是我什么时候想把数据拿出来。目前,我可以通过选择所有数据并在结束后的一个月内对其进行排序来完成此操作 我需要的是让它像现在一样显示所有信息,只是它需要先列出当月的所有数据,然后再列出下个月的所有数据,以此类推来显示这些信息。我不在乎,如果我必须只是简单地列出在适当的升序每月的信息,只是让它滚动到当前月份的第一个事件 目前我的数据库有以下内容 ID, year, month, day, event_loc, event_addres

我有一个网站,客户端将事件信息存储到数据库中。。。真的很简单

问题是我什么时候想把数据拿出来。目前,我可以通过选择所有数据并在结束后的一个月内对其进行排序来完成此操作

我需要的是让它像现在一样显示所有信息,只是它需要先列出当月的所有数据,然后再列出下个月的所有数据,以此类推来显示这些信息。我不在乎,如果我必须只是简单地列出在适当的升序每月的信息,只是让它滚动到当前月份的第一个事件

目前我的数据库有以下内容

ID, year, month, day, event_loc, event_address, event_link, event_time, event_name
你可以在这里看到它的作用:

可能是这样的SQL:

select * from <tablename> order by year desc, month desc, day desc
从订单中按年份描述、月份描述、日期描述选择*

它将先按年、月、日对数据进行排序,所有数据都是按降序排列的,因此您应该首先查看最新的事件,依此类推。

如果我是正确的,您需要的是分组(聚合),因此您只需按以下方式分组:

SELECT * FROM myTable GROUP BY month ORDER BY month DESC;

我使用降序,首先显示当前月份。

如果我理解正确,并且您只想选择从当前月份的第一天开始的事件,那么您可以这样做

SELECT ID, year, month, day, event_loc, event_address, event_link, event_time, event_name
  FROM events
 WHERE STR_TO_DATE(CONCAT_WS('-', year, month, day), '%Y-%c-%e') >= DATE_FORMAT((CURDATE()), '%Y-%m-01')
 ORDER BY year, month, day
CREATE TABLE events
(`ID` int, 
 `event_date`     datetime, 
 `event_loc`      varchar(256), 
 `event_address`  varchar(256), 
 `event_link`     varchar(256), 
 `event_duration` time, 
 `event_name`     varchar(256)
);
这里是演示


现在,为了能够使用索引和范围搜索正常查询数据,我建议更改表的模式,以使用
datetime
(对于
event\u date
列)和
time
(对于
event\u duration
)数据类型。建议的模式可能如下所示

SELECT ID, year, month, day, event_loc, event_address, event_link, event_time, event_name
  FROM events
 WHERE STR_TO_DATE(CONCAT_WS('-', year, month, day), '%Y-%c-%e') >= DATE_FORMAT((CURDATE()), '%Y-%m-01')
 ORDER BY year, month, day
CREATE TABLE events
(`ID` int, 
 `event_date`     datetime, 
 `event_loc`      varchar(256), 
 `event_address`  varchar(256), 
 `event_link`     varchar(256), 
 `event_duration` time, 
 `event_name`     varchar(256)
);
那么查询将如下所示

SELECT ID, DATE(event_date) event_date, 
       event_loc, 
       event_address, 
       event_link, 
       CONCAT(DATE_FORMAT(event_date, '%l:%i%p - '), 
              DATE_FORMAT(ADDTIME(event_date, event_duration), '%l:%i%p')) event_timee, 
       event_name
  FROM events
 WHERE event_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
 ORDER BY event_date

这是演示

您可以发布您当前的数据库查询吗?请显示您正在使用的工作数据库查询或示例代码working@user2813652有帮助吗?你的问题需要更多的帮助吗?