YYYY-DD-MM 형식의 PHP 문자열과 MySQL의 타임스탬프가 있는 경우 둘 사이를 변환할 수 있는 좋은 방법이 있습니까?
문제
날짜 문자열과 MySQL 타임스탬프를 비교하고 싶습니다.그러나 쉬운 전환은 보이지 않습니다.내가 명백한 것을 간과하고 있습니까?
해결책
타임스탬프에서 형식으로 변환:
date('Y-m-d', $timestamp);
형식화에서 타임스탬프로 변환:
mktime(0, 0, 0, $month, $day, $year, $is_dst);
저장하는 경우 형식화된 날짜로 표시하기 위해 MySQL DATE 형식을 사용할지 여부는 사용자에게 달려 있습니다.UNIX 타임스탬프로 저장하기 위한 정수로;또는 숫자 타임스탬프를 읽을 수 있는 형식으로 변환하는 MySQL의 TIMESTAMP 형식을 사용할 수 있습니다. MySQL 문서 확인 TIMESTAMP 정보용.
다른 팁
사용하지 않아도 됩니다. strtotime()
또는 getdate()
~에 PHP MySQL을 사용하여 UNIX_TIMESTAMP()
기능.
SELECT UNIX_TIMESTAMP(timestamp) FROM sometable
결과 데이터는 표준 정수 Unix 타임스탬프가 되므로 다음과 직접 비교할 수 있습니다. time()
.
프로세스를 단순화하기 위해 다음과 같은 작은 함수를 작성했습니다.
/**
* Convert MySQL datetime to PHP time
*/
function convert_datetime($datetime) {
//example: 2008-02-07 12:19:32
$values = split(" ", $datetime);
$dates = split("-", $values[0]);
$times = split(":", $values[1]);
$newdate = mktime($times[0], $times[1], $times[2], $dates[1], $dates[2], $dates[0]);
return $newdate;
}
이게 도움이 되길 바란다
strtotime() 그리고 날짜 가져오기() 문자열과 타임스탬프에서 날짜를 가져오는 데 사용할 수 있는 두 가지 함수입니다.하지만 MySQL과 PHP 타임스탬프 간에 변환하는 표준 라이브러리 함수는 없습니다.
PHP를 사용하세요 날짜 기능.다음을 사용하여 쿼리에서 mysql 타임스탬프를 Unix 타임스탬프로 변환해야 할 수도 있습니다. UNIX_TIMESTAMP mysql의 함수.
다음 형식의 날짜 문자열:
YYYY-MM-DD
그와 관련된 시간이 없습니다.MySQL 타임스탬프의 형식은 다음과 같습니다.
YYYY-MM-DD HH:mm:ss
둘을 비교하려면 날짜 문자열에 시간(예: 자정)을 추가해야 합니다.
$datetime = '2008-08-21'.' 00:00:00';
그런 다음 함수를 사용하여 둘 사이의 epoc 시간을 비교합니다.
if (strtotime($datetime) > strtotime($timestamp)) {
echo 'Datetime later';
} else {
echo 'Timestamp equal or greater';
}