채택완료

10대 20대 검색 하려면 어떻게 하면 좋을까요??

2021-03-21 (일) 17:28:25 1,570

$sex = ($sex) ? $sex : "F";

$sql_mb="select * from $g5[member_table] where mb_open='1'  and mb_sex ='$sex'  and mb_2='1' order by rand() limit 16";

현재 쿼리문에서요

mb_birth  문을 10대 검색 ~50대이상 검색으로 쿼리를 짤려면 어떻게 하면 좋을까요??

|

답변 1개

채택된 답변
+20 포인트
2021-03-22 (월) 10:18:30

먼저, 만 나이 계산 쿼리

Copy
SELECT YEAR(MAKEDATE(0,DATEDIFF(CURDATE(), '1980-02-12')))-2000;
// 41
SELECT YEAR(MAKEDATE(0,DATEDIFF(CURDATE(), '1994-12-25')))-2000;
// 26

연령대를 구하는 쿼리 (만 나이에서 10으로 나눈 후 10을 곱하기)

Copy
SELECT FLOOR((YEAR(MAKEDATE(0,DATEDIFF(CURDATE(), '1980-02-12')))-2000)/10)*10;
// 40
SELECT FLOOR((YEAR(MAKEDATE(0,DATEDIFF(CURDATE(), '1994-12-25')))-2000)/10)*10;
// 20
Copy
DROP TABLE IF EXISTS `zoo6`;
CREATE TABLE IF NOT EXISTS `zoo6` (
  `mb_no` int(11) NOT NULL AUTO_INCREMENT,
  `mb_id` varchar(20) NOT NULL DEFAULT '',
  `mb_birth` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`mb_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `zoo6` VALUES(1, 'test1', '19800526');
INSERT INTO `zoo6` VALUES(2, 'test2', '19941225');
INSERT INTO `zoo6` VALUES(3, 'test3', '20030613');
INSERT INTO `zoo6` VALUES(4, 'test4', '20050815');
INSERT INTO `zoo6` VALUES(5, 'test5', '19660412');
INSERT INTO `zoo6` VALUES(6, 'test6', '19550904');
INSERT INTO `zoo6` VALUES(7, 'test7', '20150501');
INSERT INTO `zoo6` VALUES(8, 'test8', '19760914');
INSERT INTO `zoo6` VALUES(9, 'test9', '19881111');
Copy
SELECT mb_id, FLOOR((YEAR(MAKEDATE(0,DATEDIFF(CURDATE(), DATE_FORMAT(mb_birth,'%Y-%m-%d'))))-2000)/10)*10 AS `mb_age` FROM `zoo6`;
mb_id    mb_age
test1    40
test2    20
test3    10
test4    10
test5    50
test6    60
test7    0
test8    40
test9    30

20대

Copy
SELECT * FROM `zoo6` WHERE FLOOR((YEAR(MAKEDATE(0,DATEDIFF(CURDATE(), DATE_FORMAT(mb_birth,'%Y-%m-%d'))))-2000)/10)*10 = 20;
mb_no    mb_id    mb_birth
2    test2    19941225

답변을 작성하려면 로그인이 필요합니다.