2016-10-09 6 views
0

변수가 $date="2016-10-09 10:44:03";이고 메시지 목록이 date_post (TIMESTAMP CURRENT_TIMESTAMP)으로 정렬되었습니다. 나는Datediff seconds returns error

SELECT *,DATEDIFF(second, $date,date_post) AS duration 
FROM messages 
WHERE condition 

에서 결과를 반환 할하지만

공급 인수가 유효한 MySQL의 결과 리소스없는 오류를 반환

($date 초 항상보다 낮은 date_post입니다) ...

숫자를 반환하는 것이 좋지만 오류 만 반환합니다. sintax에 따르면 $dateDATEDIFF으로 작성되어야합니다. 나는 CAST($date)을 사용하려고 시도했지만 아무 것도 사용하지 않았다. 사용하기 전에 $date을 수정해야합니까? 내가 DATEDIFF(date_post,date_post) 반환 0와 함께 작업하는 경우,하지만 $date 반환 오류로

+0

MySQL DATEDIFF 구문이 : DATEDIFF ($ date, date_post)'이므로 구문에 대해 언급 할 때 직접 질문에 답했습니다. 간격을 지정하지 마십시오. –

+0

'DATEDIFF ($ date, date_post) '를 사용하면 오류도 반환됩니다. 나는 초의 간격을 돌려 주어야한다. – Max

답변

0

당신이 초 차이를하려면 가장 쉬운 방법은 to_seconds() 사용하는 것입니다

SELECT m.*, 
     (to_seconds(date_post) - to_seconds($date))AS duration 
FROM messages m 
WHERE condition; 

사용하고있는 기능은 SQL 서버 기능입니다 . MySQL에서는 datediff()가 두 날짜 간의 차이를 일 단위로 반환합니다.

+0

고맙지 만, 제 서버는'mySQL 4.x.x'에서 작동하고, toong()에서는 다시 작동하지 않습니다. – Max

+0

이전 MySQL 버전에서는'TIME_TO_SEC'이됩니다. 그러나 이렇게하려면 날짜의 '시간'부분을 추출해야합니다. 이전 버전이'TIMESTAMPDIFF'를 지원하는지 여부는 확실하지 않지만이를 사용하면 간격을 지정할 수 있습니다. –

+0

감사합니다. TIMESTAMPDIFF와 협력했습니다! – Max