현재 날짜와 월 조합이 포함 된 쿼리에 WHERE
문을 추가하는 클리너/더 짧고 가독성있는 방법이 있습니까?클리너 현재 날짜와 월간 MySQL의 위치
SELECT id, name, dob, (YEAR(NOW()) - YEAR(dob)) AS age
FROM people
WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())
예를 들면;
WHERE dob = THISDAY()
현재 날짜와 월 조합이 포함 된 쿼리에 WHERE
문을 추가하는 클리너/더 짧고 가독성있는 방법이 있습니까?클리너 현재 날짜와 월간 MySQL의 위치
SELECT id, name, dob, (YEAR(NOW()) - YEAR(dob)) AS age
FROM people
WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())
예를 들면;
WHERE dob = THISDAY()
2 월 29 일에 태어난 사람들은 달력 날짜 (비 윤년 인 경우 5 월 1 일)와 관계없이 일반적으로 60 일째되는 날에 생일을 축하합니다.
하지 짧은 반면,이 방법을 2 월 29 일에 태어난 사람을 두지 않습니다
SELECT id, name, dob, (YEAR(NOW()) - YEAR(dob)) AS age
FROM people
WHERE DAYOFYEAR(curdate()) =
DAYOFYEAR(DATE_ADD(dob, INTERVAL (YEAR(NOW()) - YEAR(dob)) YEAR))
윤년은 이유있다 DAYOFYEAR(curdate()) = DAYOFYEAR(dob)
같은 간단한 방법이 없습니다.
좋습니다. 그러나 나의 유스 케이스는 "누가이 날짜에 등록 했는가"이며, 나는 2 월 29 일에 이미 포기했다. 현재 날짜가 2 월 28 일이면 두 번째 쿼리를 추가 할 수 있습니다. –
이상하게도 "dob"는 "등록일"을 의미합니다. 그것이 "등록 일"인지 "출생일"인지에 관계없이 해결책은 동일하지 않습니까? –
예, 그렇지만 제 조회수/디자인은 비 점프 날에 도약을 허용하지 않습니다. 그래서 나는 디자인을 업데이트하거나 그 사람들을 무시해야한다. 방금 체크를했는데, 25k 명 중 16 명이 29 위를 차지했습니다. –
[codereview.se]에서 질문 할 수 있습니다. – ElGavilan
왜이 접근 방식에 대해 좋아하지 않는 이유가 무엇입니까? –
죄송합니다. 'short/more readble'을 추가하도록 변경했습니다. 나는 코드 리뷰에서와 같이 '깨끗한'것을 의미하지는 않았지만 덜 깔끔한 것을 말합니다. –