2011-12-13 3 views
0

MySQL 데이터베이스에 YYYY-MM-DD와 00:00:00과 같은 tipical date 형식의 이벤트가 있습니다. 날짜 변수는 YYYY-MM-DD와 같은 일반적인 날짜 형식은 dbase, 시간대 및 자정까지의 시간

$STH_1 = $DBH->query("SELECT table_name       
         FROM information_schema.tables       
         WHERE table_name       
         LIKE 'v_c_ei\_9%'"); 
$stmts_1 = array(); 

foreach($STH_1 as $row_1) { 

$stmts_1[] = sprintf("SELECT * 
         FROM %s 
        WHERE date='%s'", $row_1['table_name'], $date); 

} 

$stmt_1 = implode("\nUNION\n", $stmts_1); 
$stmt_1 .= "\nORDER BY time ASC"; 

$STH_5_2 = $DBH->query($stmt_1); 

처럼 내 SELECT 쿼리 보인다.

F.ex. 우리는 DATE와 시간 23:30:00 (모든 시간은 UTC)을 사용합니다. 그리고 나는 다른 시간대 (f.ex. + 1.00)에서 1 명의 사용자가있다. 그에게 시스템은 DATE와 시간 23:30:00이 아닌 DATE + 1과 00:30:00으로 이벤트를 표시해야합니다. 그러나이 순간에 시스템은이 이벤트를 DATE와 시간 00:30:00 (날짜가 아닌 시간 만 변경됨)과 함께 표시합니다. 물론이 기본 dbase SELECT 후에 시간이 변경되고있을 수도 있습니다.

표시되는 모든 수신 이벤트는 00:00:00 - 23 : 59 : 59 사이의 시간을 가진 하나의 DATE에만 있어야합니다.

사용자 기본 시간대와 상관 관계가있는 올바른 날짜와 시간을 받기 위해 (기본 SELECT 쿼리에서) 변경해야하는 사항은 무엇입니까?

+0

'TIMESTAMP'과'DATETIME' /'DATE' /'TIME' 형식의 차이점을 알고 있습니까? – Tadeck

+0

필자가 작성한 것처럼 Date (YYYY-MM-DD 형식) 및 Time (00:00:00 형식)을 TIMESTAMP없이 사용합니다. – Andrew

+0

이 정보는 귀하의 응용 프로그램을 통해 문제의 사용자에게 제공되는가요? –

답변

0

설명하는 세부 정보는 사용자 별 논리이므로 가능한 한 늦게까지 해당 형식을 유지하는 것이 이상적입니다. 일반적으로 데이터베이스와 응용 프로그램 논리에서 UTC 날짜를 처리하고 사용자에게 표시 할 때만 형식을 지정하는 것이 좋습니다.

DateTime object을 사용해 보셨습니까? 데이터베이스 쿼리에서 새 인스턴스로 날짜를로드 한 다음 사용자 기본 설정과 setTimezone() method을 기반으로 개체를 조작 할 수 있습니다.

+0

thnks,하지만 .. 지금은 도움이 안됩니다. – Andrew

+0

그런 경우 MySQL의 [CONVERT_TZ() 함수] (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert)를보고 싶을 것입니다. -tz). – cmbuckley

관련 문제