mysql 生成日曆

SELECT
	max( CASE dw WHEN 2 THEN dm END ) AS Mo,
	max( CASE dw WHEN 3 THEN dm END ) AS Tu,
	max( CASE dw WHEN 4 THEN dm END ) AS We,
	max( CASE dw WHEN 5 THEN dm END ) AS Th,
	max( CASE dw WHEN 6 THEN dm END ) AS Fr,
	max( CASE dw WHEN 7 THEN dm END ) AS Sa,
	max( CASE dw WHEN 1 THEN dm END ) AS Su 
FROM
	(
	SELECT
		DATE_FORMAT( dy, '%u' ) wk,
		DATE_FORMAT( dy, '%d' ) dm,
		DATE_FORMAT( dy, '%w' ) + 1 dw 
	FROM
		(
		SELECT
			DATE_ADD( dy, INTERVAL t500.id - 1 DAY ) dy,
			x.mth 
		FROM
			(
			SELECT
				DATE_ADD(
					CURRENT_DATE,
					INTERVAL - DAYOFMONTH( CURRENT_DATE ) + 1 DAY 
				) dy,
				DATE_FORMAT( CURRENT_DATE, '%m' ) mth 
			FROM
			DUAL 
			) x,
			t500 
		WHERE
			t500.id <= 31 
			AND DATE_FORMAT(
				DATE_ADD( dy, INTERVAL t500.id - 1 DAY ),
				'%m' 
			) = mth 
		) y 
	) z 
GROUP BY
	wk 
ORDER BY
	wk
相關文章
相關標籤/搜索