PHP/MySQL에서 시간 다루기
PHP와 MySQL에서 시간을 다룰 때는 strtotime() 함수를 활용하면 매우 편리합니다. 이 함수는 '8:55 PM'처럼 사람이 읽기 쉬운 시간 표현을 유닉스 타임스탬프로 변환해 주며, date() 함수와 함께 사용하면 원하는 형식으로 시간을 손쉽게 출력할 수 있습니다.
PHP에서 12시간제를 24시간제로 변환하기
다음은 strtotime() 함수를 사용해 '8:55 PM'과 같은 12시간제 시간을 24시간제(H:i:s) 형식으로 변환하는 PHP 코드입니다.
$timeValue = '8:55 PM';
$changeTimeFormat = date('H:i:s', strtotime($timeValue));
echo("24시간제로 변환된 형식 = ");
echo($changeTimeFormat);
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
24시간제로 변환된 형식 = 20:55:00
즉, 오후 8시 55분이 24시간제 표기인 20:55:00으로 정확하게 변환된 것을 확인할 수 있습니다.
MySQL에서 24시간제를 12시간제로 변환하기
반대로 MySQL에서는 DATE_FORMAT() 함수를 사용해 24시간제 시간을 12시간제 형식으로 변환할 수 있습니다. 아래 쿼리는 '2019-03-12 20:55:00'이라는 DATETIME 값을 '%l:%i %p' 형식(12시간제, AM/PM 표시 포함)으로 변환합니다.
mysql> SELECT CONCAT('MySQL에서 변환된 12시간제 형식 = ', DATE_FORMAT('2019-03-12 20:55:00', '%l:%i %p')) AS OriginalTimeFormat;쿼리 실행 결과는 다음과 같습니다.
+------------------------------------------------+
| OriginalTimeFormat |
+------------------------------------------------+
| MySQL에서 변환된 12시간제 형식 = 8:55 PM |
+------------------------------------------------+
1 row in set (0.00 sec)
정리
PHP의 strtotime() 함수는 문자열 형태의 시간을 타임스탬프로 변환한 뒤 date() 함수로 원하는 출력 형식을 지정할 수 있고, MySQL의 DATE_FORMAT() 함수는 데이터베이스에 저장된 DATETIME 값을 다양한 형식으로 변환해 줍니다. 이 두 가지 방법을 함께 활용하면 PHP와 MySQL 사이에서 시간 형식을 자유롭게 주고받으며 처리할 수 있습니다.