체크인 기능이 있는 플랫폼이 있습니다. 이 사용자가 이 플랫폼에 연속으로 체크인한 일수를 확인하고 그에게 다른 포인트를 주어야 합니다. 예를 들어 오늘은 4월 26일이고 4월 15일부터 매일 로그인했습니다. 즉, 4월 13일에도 로그인했지만 4월 14일에는 로그인하지 않았습니다. mysql 문 작성 방법
일반적으로 연속 로그인 일수가 저장되지 않는 경우 이전에 수행했던 한 가지 방법은 로그인을 타임스탬프와 함께 저장한 다음 로그인의 타임스탬프를 가져오는 것입니다. 한 달 동안의 데이터를 얻습니다(이번 달에 로그인이 가득 차면 이전 달의 숫자를 가져옵니다). 그런 다음 PHP에서 일 수를 반복하여 계산합니다. 나중에는 이 방법이 속도가 느려져서 체크인 날짜를 따로 기록했어요
데이터베이스 설계 문제 연속적인 일수를 계산해야 하기 때문에 매일 한 항목을 기록하는 것은 불가능합니다(은행이 사용자의 잔액을 며칠 동안 기록한다고 상상해 보세요). 회계 방식을 연간 누적 알고리즘이라고 합니다. 즉, 특정 시점을 다른 시점까지 기록하는 것입니다. 한 시점의 잔액은 변경되지 않습니다(연속). 테이블 디자인은 대략 다음과 같습니다.
일반적으로 연속 로그인 일수가 저장되지 않는 경우 이전에 수행했던 한 가지 방법은 로그인을 타임스탬프와 함께 저장한 다음 로그인의 타임스탬프를 가져오는 것입니다. 한 달 동안의 데이터를 얻습니다(이번 달에 로그인이 가득 차면 이전 달의 숫자를 가져옵니다). 그런 다음 PHP에서 일 수를 반복하여 계산합니다. 나중에는 이 방법이 속도가 느려져서 체크인 날짜를 따로 기록했어요
데이터베이스 설계 문제
연속적인 일수를 계산해야 하기 때문에 매일 한 항목을 기록하는 것은 불가능합니다(은행이 사용자의 잔액을 며칠 동안 기록한다고 상상해 보세요).
회계 방식을 연간 누적 알고리즘이라고 합니다. 즉, 특정 시점을 다른 시점까지 기록하는 것입니다. 한 시점의 잔액은 변경되지 않습니다(연속).
테이블 디자인은 대략 다음과 같습니다.
종료 시간 - 시작 시간 = 일수 포인트 전환은 세금과 동일하며 보너스만 계산하세요.
비즈니스 규칙에는 연속 x일 동안 부여되는 포인트 수에 대한 제한이 있어야 합니다. 예를 들어 연속 20일이 넘는 경우 포인트 수는 얼마나 부여됩니까?
그럼 이 x를 기억해두세요. db에서 * from tb를 선택하세요. 여기서 uid = 10086 order by dt desc Limit x
그런 다음 프로그램에서 최대 연속 일수를 결정하고 해당 점수를 추가하세요.