2011-02-23 3 views
4

많은 사람들과 마찬가지로 PHP와 MySQL의 많은 날짜 기능에 대해 완전히 혼란 스럽습니다. 필자가 필요로하는 것은 MySQL에 날짜를 저장하고 사람이 읽을 수있는 형식으로 화면에서 볼 수 있고, 표준 웹 폼을 사용하여 월, 연도 또는 둘의 조합으로 검색하거나 정렬 할 수 있어야합니다. 몇 달 또는 몇 년.PHP/MySQL 날짜 저장 및 검색

예제 검색은 지난 5 년간 febuary에 대한 모든 레코드가됩니다.

저는 달을 02-12-2011 형태로 입력하는 자바 스크립트 캘린더가 있습니다.

가장 적합한 형식은 무엇입니까? MySQL에서 필드는 무엇이어야 하는가?

감사

답변

1

의 MySQL의 열 유형이 date해야한다.

+0

SELECT * FROM 'data' WHERE MONTH('date') = 2 AND YEAR('date') >= YEAR(NOW()) - 5 

는 (직접도 있지만, 일반적으로 MySQL의에서 그것을 할 수 당신은 쿼리에서 일종의 수학/비교를 직접 수행 할 필요가없는 한 그렇게하고 싶지 않습니다.) – prodigitalson

0

날짜이므로 DATE 열로 저장하십시오. SQL 쿼리에서 UNIX_TIMESTAMP()를 사용하거나 PHP에서 strtotime을 사용하여 PHP date() 함수에 전달할 수있는 값으로 변환하여 원하는 날짜 형식으로 출력 할 수 있습니다.

3

DateTime 개체를 사용하십시오.

날짜를 mysql에 DATE 형식으로 저장하십시오.

데이터가 밖으로 DateTime 개체를 만들 읽을 때 데이터

$date = new DateTime($_POST['date']); 

or 

$date = DateTime::createFromFormat('d-m-Y', $_POST['date']); 

$query = sprintf("INSERT INTO `data` SET `date` = '%s'", $date->format('Y-m-d')) 

를 작성.

$date = new DateTime($row['date']); 

그런 다음 원하는 형식으로 인쇄 할 수 있습니다. 예 : 당신은 자바 스크립트의 형식 :

echo $date->format('d-m-Y'); 

http://www.php.net/manual/en/class.datetime.php

및 날짜 형식에 대한 참조 :

http://www.php.net/manual/en/function.date.php

지금까지 검색, 당신은 필드에 MySQL의 날짜 기능을 사용할 수 있습니다 가서 .

지난 5 월 2 월의 모든 기록. 당신이 그것을 포맷 할 방법으로 변환하는 데 필요한 PHP 측 있도록 YYYY-MM-dd``로 포맷됩니다 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

+0

또한 'DateTime' 클래스는 PHP> = 5.3.0에서만 사용할 수 있습니다. – galymzhan

+0

실제로 5.2 이후 버전에서 사용 가능하며, 그러나 일부 기능은 5.3+ – Jacob

+0

입니다. 이것은 제가 가지고있는 것이지만, 몇 가지 문제를 일으키고 있습니다. 그래서 이것이 내가 묻는 이유입니다. 첫 번째 : MySQL은 YYYY-MM-DD로 날짜를 저장하고 javascript는 DD-MM-YYYY로 입력합니다 (이것이 내가 원하는 것입니다). 나는 그것을 개조하고 있지만 실제 고통은있다. 다른 문제는 이것입니다.시간에 이것은 빈 필드가 될 수 있습니다 그리고 난 그냥 비어있을 싶지만 그것은 자동으로 0000-00-000, 어떤 것들을 엉망으로 입력 아무것도 없다면 그것은 날짜 필드이기 때문에 나는 추측한다. – confused