2013-08-11 2 views
1

날짜가 MySQL 데이터베이스 테이블에 표준 형식으로 저장되어 있습니다. 1955-07-23.날짜를 읽을 수있는 형식으로 표시

1955 그래서 나는이 시도 7 월 23 일 : :이처럼 그들을 표시 할

echo DATE("F d, Y",strtotime($Born['DATE'])); 

그것은 올바른 형식,하지만 잘못된 날짜를 표시합니다.

$res = mysql_query ("SELECT P.URL, PB.Born, PB.Died, PB.Birth_Place, PB.Death_Place 
FROM people P 
LEFT JOIN people_1_bio PB ON PB.URL = P.URL 
WHERE P.URL LIKE '$MyURL' AND P.Site = '$MySiteID'") or die (mysql_error()); 
: 아무리 내가 그것을 변경하는 방법, 그것은 12 월 31 일, 처음부터 1969

가 표시되지 않습니다,이 PB.Born 및 PB.Died 다양한 사람들이 태어나고 사망 한 날짜를 = 내 쿼리입니다

은 그 때 나는

$Born = $row['Born']; 
$Died = $row['Died']; 
$Birth = DATE("F d, Y",strtotime($Born['DATE'])); 
$Death = DATE("F d, Y",strtotime($Died['DATE'])); 

내가 변화, 내부 while 루프 외부의 숫자를 시도했습니다 ...이 있습니다. 상관없이 페이지의 URL, 표시되는 날짜는 항상 년 12 월 31 일입니다 1969 년 나는 또 다른 전략을 시도

...

다음
$res = mysql_query ("SELECT P.URL, UNIX_TIMESTAMP(Born) AS Birth, PB.Died, 
FROM people P 
LEFT JOIN people_1_bio PB ON PB.URL = P.URL 
WHERE P.URL LIKE '$MyURL' AND P.Site = '$MySiteID'") or die (mysql_error()); 

내가 에코 ...

echo date('F j, Y',$result['Birth']); 

그리고 같은 날짜를 잡아라!

내가 표시 날짜의 gazillion 다른 방법을 발견했습니다,하지만 그들은 혼란입니다. 아무도 나에게 무슨 일이 일어나는지 말해 줄 수 있니?

감사합니다.

+0

데이터베이스에서 가져올 때 UNIX_TIMESTAMP (Born)의 값은 무엇입니까? – Axarydax

+0

데이터베이스에서 가져 오는 방법을 모르겠습니다. 그것이 표시하는 유일한 것은 1969 년 12 월 31 일입니다. 그래서 나는 그것이 가치라고 생각합니다. 그러나 데이터베이스에서 아무 데나 그 날짜를 찾을 수 없습니다. 1969 년 12 월 31 일이 일반적인 오류라고 Google에서 발견했습니다. 아직 해결책을 찾지 못했습니다. 당신이 $ 결과가있는 경우 –

+0

=는 mysql_query가 – Axarydax

답변

0

strtotime는 MySQL의에서 얻을 수 날짜 문자열을 구문 분석 할 수 없습니다. FALSE를 반환하는 것은 도움이되지 않으며, date은 0으로 유형화하고 유닉스 시대로 해석합니다. 그때 1969 년 12 월 31 일으로 표시됩니다.

그것은 데이터베이스가 문자열이나 뭔가로 날짜를 저장하는 것 같습니다. 이 경우 가능하다면 계획을 변경하는 것이 좋습니다.

+0

와우, 이건 혼란스런 물건입니다! 해결책을 찾은 것 같습니다. 쿼리를 다음과 같이 변경했습니다. DATE_FORMAT (DATE (PB.Born), '% M % d, % Y') AS 출생 ... 에코 $ 출생. 그러나 MySQL 대신 PHP에서 날짜 형식을 지정하는 것이 더 좋은 이유를 알 수 있습니다. 간단한 PB.Born으로 데이터베이스 쿼리를 변경하고 싶습니다. 그런 다음이 작업을 수행하십시오. $ Born = $ row [ 'Born']; $ Born = date_format ("F j, Y"); echo $ Born; 하지만 설정 한 날짜도 표시됩니다. –

관련 문제