2013-09-27 2 views
0

나는 다음과 같은 작업을하려고합니다 : 제 데이터베이스에는 시간이있는 행이 있습니다 (time() 함수 사용). 예 : 1380300397 이제 현재 날짜의 행을 가져 오는 쿼리를 작성하고 싶습니다.PHP와 SQL - MySQL과 유닉스 타임 스탬프를 비교하십시오.

SELECT `id`,DATE_FORMAT(`time`, '%Y-%m-%d') FROM `facts` 
WHERE `app` = 1 AND DATE(`time`) = CURDATE() 

내가 잘못 뭐하는 거지 : 나는 어떤 성공이 쿼리를 시도했습니다? 감사합니다.

+3

왜 데이터베이스에 유닉스 타임 스탬프를 저장하고 있습니까? MySQL에는 날짜와 시간을 저장하기위한 DATETIME 데이터 유형이 있습니다. –

+0

다음 프로젝트를 위해 그렇게 할 것입니다. 그러나이 프로젝트에서는 해결책을 찾아야합니다. – Nero

+0

http://stackoverflow.com/questions/8079671/find-records-with-a-date-field-in-the-last-24-hours –

답변

2
AND DATE(FROM_UNIXTIME(time)) = CURDATE() 
1

그럼 당신이 그것을 할 수있는 가장 좋은 방법입니다 제 생각에는 사용 NOW() 대신 CURDATE

+1

'NOW()'를 사용하는 이유는 무엇입니까? –

+1

왜 지금()입니까? 나는 데이트 만하면 돼. – Nero

0

을 시도 할 수 있습니다. 첫눈에 오버 헤드가있는 것 같지만이 방법을 사용하면 열에 어떤 함수도 적용되지 않으므로 time 열에 인덱스가 있으면 쿼리에서 인덱스를 사용할 수 있습니다.

SELECT 
    `id`, DATE_FORMAT(`time`, '%Y-%m-%d') 
FROM 
    `facts` 
WHERE 
    `app` = 1 
     AND `time` >= UNIX_TIMESTAMP(CONCAT(CURDATE(), ' 00:00:00')) 
     AND `time` < UNIX_TIMESTAMP(CONCAT(DATE_ADD(CURDATE(), INTERVAL 1 DAY), 
        ' 00:00:00')) 
관련 문제