php date와 mysql select 차이 어느 것이 맞다고 보세요?

· 2014-08-15 (금) 19:10:22 · 2368 · 6

날짜 함수로 하면

date( "Y-m-d", strtotime( "2014-01-31 +1 month" ) ); --> 2014-03-03

sql문으로 하면
SELECT DATE_ADD( '2014-01-31', INTERVAL 1 MONTH ) --> 2014-02-28 

 

한달 후를 계산하면 저렇게 나오게 되는데 여러분은 어느것이 옳다고 보시는가요?

 

 

|

댓글 6개

2014-08-15 (금) 19:19:48
언어의 특성을 잘 알고 사용처에 적절히 사용하면 되겠죠.
말일 부터 시작해 1달 텀이니 sql문이 맘에는 듭니다만...ㅎㅎ
date함수가 저런지 몰랐네요. 저리 나오면 대략난감 아닌가요?
여기선 select문이 요구에 더 부합하지 않나 생각 됩니다.
예약 프로그램 같은 거 만들 때...
http://stackoverflow.com/questions/7119777/php-strtotime-1-month-behaviour

Php 의 이슈화된 버그이고, 해결방법이 올라와있네요.
그런데, 저는 처음알아서 ...정보 감사합니다.

쿼리로 날짜 처리하는게 습관인게 좋을때도 있었군요
다음달에 날짜(31)가 존재하지 않으면 그 다음달로 가는거 같습니다.
echo date( "Y-m-d", strtotime( "2014-01-28 +1 month" ) ); // 2014-02-28
echo date( "Y-m-d", strtotime( "2014-01-31 +1 month" ) ); // 2014-03-03
그렇습니다
마지막 달이 31일까지 있지않으면 그 다음달로 계산합니다
+2 month 하면 작은달 관계없이 2달 후를 계산하거든요
date( "Y-m-d", strtotime( "2014-01-31 +2 month" ) ); -->2014-03-31 이 된단 말이죠
+3 month <--- 이건 2014-05-01 이 되어버린단 말이죠
일관성 있게 3월 3일부터 한달 후인 2014-04-03 이 되면 그런 용도로 쓰면 되는데 왔다리 갔다리..

무턱대고 사용했다가 형편없는 프로그래머 될뻔했네요
앗, 형편없는거 맞나? ㅠㅠ
하여튼 strtotime 은 약간의 문제가 있는 함수다라고 인식하고 쓰야겠어요
2014-08-17 (일) 23:21:03
조용히 스크랩을 눌러봅니다.
댓글을 작성하시려면 로그인이 필요합니다.

자유게시판

202,867건
+
제목 글쓴이 날짜 조회
14-08-16 조회 1,315
14-08-16 조회 6,444
14-08-16 조회 2,146
14-08-16 조회 1,540
14-08-16 조회 1,949
14-08-16 조회 2,199
14-08-16 조회 1,361
14-08-15 조회 1,976
14-08-15 조회 1,937
14-08-15 조회 2,369
14-08-15 조회 1,250
14-08-15 조회 1,341
14-08-15 조회 1,324
14-08-15 조회 1,246
14-08-15 조회 1,286
14-08-15 조회 3,864
14-08-15 조회 1,356
14-08-15 조회 1,271
14-08-15 조회 1,811
14-08-15 조회 1,578