现在的位置: 首页 > 综合 > 正文

MySQL 取生日段

2014年04月04日 ⁄ 综合 ⁄ 共 540字 ⁄ 字号 评论关闭
SELECT
	*,
	(
		CASE
		WHEN d < CURRENT_DATE THEN
			- 1
		WHEN d = CURRENT_DATE THEN
			0
		WHEN d > CURRENT_DATE THEN
			1
		END
	) AS x
FROM
	(
		SELECT
			id,
			user_name,
			real_name,
			user_level,
			birthday,
			positions,
			(
				CASE
				WHEN MONTH (CURRENT_DATE) = 12
				AND MONTH (birthday) = 1 THEN
					DATE_ADD(d, INTERVAL + 1 YEAR)
				WHEN MONTH (CURRENT_DATE) = 1
				AND MONTH (birthday) = 12 THEN
					DATE_ADD(d, INTERVAL - 1 YEAR)
				ELSE
					d
				END
			) d
		FROM
			(
				SELECT
					*, STR_TO_DATE(
						REPLACE (
							DATE_FORMAT(birthday, '%Y-%m-%d'),
							YEAR (birthday),
							YEAR (CURRENT_DATE)
						),
						'%Y-%m-%d'
					) d
				FROM
					user_info
			) t1
	) t2
WHERE
	t2.d BETWEEN ADDDATE(CURRENT_DATE, - 30)
AND ADDDATE(CURRENT_DATE, 30)
ORDER BY
	x ASC,
	t2.d ASC

抱歉!评论已关闭.