php에서 날짜를 비교할 때 strtotime을 자주 사용을 하는게 좋은가요?

php에서 날짜를 비교할 때 strtotime을 자주 사용을 하는게 좋은가요?

QA

php에서 날짜를 비교할 때 strtotime을 자주 사용을 하는게 좋은가요?

본문

2014-12-11 12:13:15

2015-12-11 00:00:00

 

mysql 에서 날짜가 위 형식으로 저장이 되겠는데요.

 

php에서

 

날짜를 서로 비교하거나 할 때,

그냥 저 문자형태로 비교를 해도 잘 되긴 하더라구요.

 

근데 그렇게 해도 되나요?

 

strtotime 이라고 날짜형태를 타임스탬프로 바꿔주는 함수인데

이 함수를 사용을 해서 비교하는게 올바른걸까요?

이 질문에 댓글 쓰기 :

답변 4

형식이 정확하니 한 단계 처리를 더할 이유는 없습니다

strtotime 안해도 정확히 비교 됩니다

 

mysql 에 있는 날짜 함수 이용해서 작업 하세요.<--- 쿼리에 함수를 쓰면 아닌 것보다 느리다는 얘기가 있습니다

그럴수 밖에 없는 것이 특정필드를 날짜함수로 변환하는 함수를 써서 where절을 만들면 모든 레코드에 대해서

변환 작업을 하고 비교하고 그럴것이니 단순 비교만 하는 것보다 느릴 수 밖에 없을 것입니다

저는 가능하면 쿼리문에서 함수는 안쓰고 비교연산자만 씁니다

 

 

 

맞는 말이에요.

스타일 차인데요.

저는 시스템을 DB와 같다고 생각하고 있어서요.
DB 설계에 많은 고민과 시간을 투자하고요. 프로그램 시 될 수 있으면 쿼리 한방에 해결하려고 하고
PHP는 출력 된 데이터를 화면에 출력해주는 역할만 하게 하려고 해요.

쿼리 한줄에 데이터가 출력되지 않으면 시스템 관리 할 때 DB핸들링이 힘들다보니
프로그램에서 코딩수를 줄이기 위해 DB쪽에 부하를 줘요

웹서버에 의지한 PHP 보다는 DB가 더 빠르다는 것이 개인적인 생각이거든요.
DB에 부하가 많아진다고 판단되는 시스템에서는 파일을 이용하고요.

날짜 생성 비교 수정은 쿼리에서 해결해야 된다고 생각합니다.

 

제 경험상 그렇게 생각하는 이유는

 

DB서버와 웹서버 클라이언트가 다 다른 시간대를 사용한다면

 

시작과 최종적으로 DB I/O가 일어나는 DB서버의 시간대를 사용해야 된다고 생각합니다.

 

개발시 날짜는 정말 민감한 부분 입니다. 

 

수고하세요

 

 

무슨 말씀이신가요? 답변이 완전히 삼천포로 빠진 것 같습니다만....
디비에 기록된 시간을 가져와서 비교를 하는데 strtotime을 써서 하는 것이 맞느냐 그냥 문자열 비교만 해도 되느냐하는 질문 아닙니까?
디비서버의 시간대가 왜 필요한가요? ㅠㅠ

그건 그렇다쳐도 디비시간대와 웹서버 시간대가 차이가 있는 경우??
디비서버와 웹서버 시간대가 다르면 사용자가 사용하고 잇는 웹서버시간을 기록하는 것이
맞는 것이지 디비서버 시각이 무슨 소용이랍니까?
예를들어 웹서버는 한국에 잇고 디비서버가 미국에 있다면 게시물 등록시각을
한국시각을 기록하지않고 미국시각을 기록해야 정확하게 사용할 수 있다 그런 얘기인가요?
출력시에는 다시 한국시각으로 변환해서 보여주는 것인가요?
그렇게해야 한다는 의미는
예를들어 한달이전 게시물을 추출한다라고 할 때 디비의 날짜 함수를 사용해서 정확하게 처리할 수 있다 뭐 그런 얘기인가요?
시각대가 다를경우 웹서버기준으로 기록할 것이냐  디비서버기준으로 기록할 것이냐 기준만 정하면 되리라 봅니다
개발시 날짜는 정말 민감한 부분 입니다<---- 10년가까이 이일을 하고 있지만 디비서버와 시간대가 다른 경우도 없었거니와 굳이 디비서버 시각이 필요한 경우를 본적이 없어서 예를 하나 들어주세요
아는 만큼만 보인다고 저는 그런 경우를 본적이 없어서 이해가 안되네요

답변 모두 감사합니다.

 

DB를 괜히 꺼냈나보네용 ㅠ

 

제가 정말 궁금했던건

 

$a = '2014-12-11 12:13:15';

$b = '2015-12-11 00:00:00';

 

이렇게 있을 때, 실제로 두 값을 비교하는건

겉으로 보면 날짜지만, 실제로는 사전형식(a보다 b가 큰것처럼)으로 비교되는것이 아닌가 하거든요.

 

그래서 정말 날짜의 비교를 하려면

strtotime 으로 바꿔서

strtotime($a), strtotime($b) 이렇게 바꿔서

비교하는게 실제로 날짜의 비교라 볼 수 있지 않나 하거든요.

 

근데 어차피 사전형식으로 비교를 한다해도 결과는 똑같고,

예외가 전혀 없다면 가장 쉬운 방법을 쓰는게 맞지 않을까 생각도 들기도 하구요.

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT