2012-06-21 2 views
1

데이터베이스에 저장해야하는 값의 종류를 알지 못합니다.PHP/MySQL 사용자가 마지막으로 로그인 한 이후의 시간 표시

나는 이런 식으로 뭔가를해야한다 생각하고 있어요,하지만 난 방법을 모른다 : 다른에 다음

스토어 년, 일, 시간, 분부터주고 날짜와 같은 1/1/2000 을 시간을 2000 년 1 월 1 일 이후 현재 연도, 일, 시간 및 분과 비교할 것입니다. 두 사용자의 차이는 사용자의 마지막 로그인 이후의 시간 일 것입니다.

누구든지이 점에 대해 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

그래, 날짜 시간 필드가 괜찮이다. 사용자가 로그인 할 때마다 업데이트하고 현재 날짜와 저장된 날짜의 차이를 얻습니다. –

+0

유닉스 타임 스탬프를 저장해야합니다. 이것은 1970 년 1 월 1 일 이후의 초 수로 거의 모든 언어에서 매우 잘 지원됩니다. – kingcoyote

답변

2

TIMESTAMP 또는 DATETIME을 사용하지 않는 이유는 무엇입니까? 그것은 당신이 필요로하는 전부입니다.

1

마지막 로그인의 타임 스탬프를 저장 한 다음 산술을 수행 할 수 있습니다. 어쩌면 DateTime :: diff 메서드를 사용하여 PHP가 어려운 계산을하도록 할 수 있습니다 .-)

3

mysql이 작업을 수행합니다. 1970 년 1 월 1 일 이후의 초 수를 저장합니다. 차이를 계산하십시오.

시험해보십시오. SELECT NOW();. 지금 날짜/시간이 표시됩니다. SELECT UNIX_TIMESTAMP(NOW());을 시도하면 Epoch 이후의 시간 (초)이 표시됩니다 (단, 보통은 필요하지 않습니다).

사용자가 로그인 할 때마다이 값을 저장해야합니다. 즉, now()를 테이블에 삽입하거나 last_login 필드를 업데이트해야합니다.

INSERT INTO user_login_history (user_id, login_date) VALUES (1, NOW());

last_loginlogin_date 필드 (저장 날짜와 시간) 중 하나 DATETIME 형식이어야 할 것

UPDATE users SET last_login=NOW() WHERE user_id=1;

참고 :

당신은 두 가지 옵션이 있습니다 또는 TIMESTAMP 또는 DATE (날짜 만) 또는 TIME (시간 만).

또한, 당신과 같이, DATEDIFF와 MySQL의 시간 계산을 수행 할 수 있습니다

테이블에서

SELECT NOW(), DATEDIFF(NOW(), DATE('2012-6-5'));

, SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;

+0

내가 사용하는 경우 : SELECT NOW(), DATEDIFF (NOW(), DATE ('2012-6-5')); echo를 사용하여 인쇄 할 수 있도록 변수에 값을 가져 오는 방법은 무엇입니까? – Milkbones

+0

mysql_query를 사용해야한다. [example] (http://www.php.net/manual/en/function.mysql-query.php)에서 사용 방법을 확인하십시오. 클리트가 충분하지 않으면 답을 수정합니다. – jadkik94

관련 문제