php에서 날짜를 비교할 때 strtotime을 자주 사용을 하는게 좋은가요?
본문
2014-12-11 12:13:15
2015-12-11 00:00:00
mysql 에서 날짜가 위 형식으로 저장이 되겠는데요.
php에서
날짜를 서로 비교하거나 할 때,
그냥 저 문자형태로 비교를 해도 잘 되긴 하더라구요.
근데 그렇게 해도 되나요?
strtotime 이라고 날짜형태를 타임스탬프로 바꿔주는 함수인데
이 함수를 사용을 해서 비교하는게 올바른걸까요?
답변 4
형식이 정확하니 한 단계 처리를 더할 이유는 없습니다
strtotime 안해도 정확히 비교 됩니다
mysql 에 있는 날짜 함수 이용해서 작업 하세요.<--- 쿼리에 함수를 쓰면 아닌 것보다 느리다는 얘기가 있습니다
그럴수 밖에 없는 것이 특정필드를 날짜함수로 변환하는 함수를 써서 where절을 만들면 모든 레코드에 대해서
변환 작업을 하고 비교하고 그럴것이니 단순 비교만 하는 것보다 느릴 수 밖에 없을 것입니다
저는 가능하면 쿼리문에서 함수는 안쓰고 비교연산자만 씁니다
mysql 에 있는 날짜 함수 이용해서 작업 하세요.
모든 것은 쿼리로 해결하시고요.
php는 거들 뿐이에요
날짜 생성 비교 수정은 쿼리에서 해결해야 된다고 생각합니다.
제 경험상 그렇게 생각하는 이유는
DB서버와 웹서버 클라이언트가 다 다른 시간대를 사용한다면
시작과 최종적으로 DB I/O가 일어나는 DB서버의 시간대를 사용해야 된다고 생각합니다.
개발시 날짜는 정말 민감한 부분 입니다.
수고하세요
답변 모두 감사합니다.
DB를 괜히 꺼냈나보네용 ㅠ
제가 정말 궁금했던건
$a = '2014-12-11 12:13:15';
$b = '2015-12-11 00:00:00';
이렇게 있을 때, 실제로 두 값을 비교하는건
겉으로 보면 날짜지만, 실제로는 사전형식(a보다 b가 큰것처럼)으로 비교되는것이 아닌가 하거든요.
그래서 정말 날짜의 비교를 하려면
strtotime 으로 바꿔서
strtotime($a), strtotime($b) 이렇게 바꿔서
비교하는게 실제로 날짜의 비교라 볼 수 있지 않나 하거든요.
근데 어차피 사전형식으로 비교를 한다해도 결과는 똑같고,
예외가 전혀 없다면 가장 쉬운 방법을 쓰는게 맞지 않을까 생각도 들기도 하구요.