1

以下のように、タイムスタンプ列から単一のクエリで個別の年とそれらの年の個別の月を選択するにはどうすればよいですか?

select distinct year(sc_ts) as years from posts where user_id = 1 order by years ascどういうわけか月の部分がそこに収まらないようにしてみました。または、これには2つの異なるステートメントとphp処理が必要ですか。

として出力するつもりです

2009 - Mar, Apr, May
2010 - Apr, Jun, Jul

"2009-03-22 16:07:48"
"2009-04-22 16:07:48"
"2009-05-22 16:07:48"
"2010-04-22 16:07:48"
"2010-06-22 16:07:48"
"2010-07-22 16:07:48"
"2011-01-22 16:07:48"
"2011-02-22 16:07:48"
"2011-05-22 16:07:48"
"2011-06-22 16:07:48"
"2011-08-22 16:07:48"
"2012-01-22 16:07:48"
"2012-02-22 16:07:48"
"2012-03-22 16:07:48"
"2012-04-22 16:07:48"
"2012-08-22 16:07:48"
4

3 に答える 3

4
select distinct year(sc_ts) as years, group_concat(monthname(sc_ts)) as months from posts where user_id = 1 order by years asc

編集:私はmonth()元々、月番号を与えたものを使用し、monthname()代わりに月の名前を返しました。

于 2012-08-22T12:11:20.500 に答える
2
SELECT x.`Year`, GROUP_CONCAT(x.`Month`) AS Months
FROM
    (
        SELECT DISTINCT YEAR(sc_ts) AS `Year`, MONTHNAME(sc_ts) AS `Month`
        FROM
            `posts`
        WHERE
            user_id = 1
        ORDER BY
            MONTH(sc_ts)
    ) x
GROUP BY
    x.`Year`
ORDER BY
    x.`Year`
于 2012-08-22T12:18:38.673 に答える
0

試すSELECT distinct SUBSTRING(year(sc_ts), 6)

于 2012-08-22T12:24:53.457 に答える