2011-04-08 277 views
0

我有一个mysql数据库,在这里我有一个叫做articles的表。我想在我的网页上显示这篇文章的档案。我想要做的是,我必须显示年份,一旦用户点击一年,它将显示包含该文章的月份列表..我怎么可以写这个MySQL查询?我面临的问题是,我必须显示包含几个月一样的文章的年份。我有我的表格中的时间戳形式的文章创建日期..任何人可以告诉我如何做到这一点?需要帮助mysql查询

编辑:

CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(20) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    `pid` int(20) NOT NULL DEFAULT '0', 
    `department_id` int(20) NOT NULL, 
    `author` varchar(100) NOT NULL, 
    `created` varchar(25) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ; 
+0

你可以输入命令'描述的文章得到每个月的数据;'和粘贴在这里输出?不知道你的模式,这将是很难帮助:) – 2011-04-08 06:49:03

+0

请看看它。 – Arung 2011-04-08 06:55:41

+1

啊,我很怀疑。一个主要的问题是你将日期存储为一个字符串:'varchar(25)'而不是本地MySQL日期字段。 – 2011-04-08 07:00:29

回答

2

您的数据库引擎有提取一个SQL时间戳的数据和时间的各个部分的功能。例如,在MySQL中,你可以做

SELECT YEAR(created), MONTH(created) FROM articles ...

+0

+1,因为这是正确的,但考虑到OP刚刚发布的模式,我们将手中充满迁移到本地日期或时间戳字段 – 2011-04-08 07:01:12

0

,显示文章

在PHP

$ R =请求mysql_query( “SELECT * FROM文章顺序按年,月”);

然后显示它们全部

$ oldYear = 0; 而($文章= mysql_fetch_array($ R){

$year =$article[year] 
if($year != $oldYear){ 
      echo $year 
      oldYear = $year 
} 

    echo $article[month] 

}

而且使用Ajax,只是使每个山是一年 希望的子菜单这有助于

2

我只是建议ü该算法FFT

使用第一选择DATABSE全年名字

SELECT FROM_UNIXTIME(created, '%Y') AS `year` 
    FROM articles 
    GROUP BY year 

然后用下面

SELECT *, FROM_UNIXTIME(created, '%Y') AS `year` 
FROM articles 
HAVING `year` = 2009