* MySQL 날짜함수 sysdate() 와 now()의 차이점
안녕하세요 송군함대입니다~!^-^/
요즘 MySQL에 대해 공부하게 되면서 조금씩 포스팅을 하게 되었는데요~!
모두에게 조금씩이나마 도움이 되길 바라며, 이글을 끄적여봅니다^-^;;
이번에 설명드릴 내용은 MySQL에서 제공하는 날짜함수 중 현재시각을 구하기 위한 sysdate()와 now() 함수의 차이점입니다^-^
두 함수는 모두 현재 시각을 반환해주는 공통점이 있습니다.
하지만 똑같은 함수가 두개나 존재할 필요는 없겠지요?!!
SQL문에서 호출되는 시점에 따라 결과가 서로 다르게 나타나게 됩니다~!!
한번 예문으로 살펴보도록 하겠습니다~!^-^
ex) select now(), sysdate(), sleep(10), now(), sysdate();
위의 결과에서 보듯이 중간에 sleep(1)을 주었습니다~!
now()와 sysdate()의 차이가 보이시나요?!!
now()는 sleep(10)이 중간에 있음에도 불구하고 동일한 시간대를 보여주지만,
sysdate()는 10초 후의 시간을 반환해주는 것을 볼 수 있습니다~!
차이점을 알았으니, 해당 차이점에 따른 사용방법에 대해 알아보아야겠지요?!!
sysdate()함수를 사용하면서 발생할 수 있는 문제점이 몇가지 존재합니다.
이중화를 통해 다중으로 DB를 구성할 시(Master/Slave) Master와 Slave 간에 시간이 다르게 표시될 수 있습니다.
sysdate() 컬럼 비교시 index의 사용이 되지 않고 Full Table Scan으로 실행됩니다.
위의 문제점을 해결하기 위해서는 sysdate()의 이러한 점을 잘 고려해서 사용해야겠지요?!!
되도록이면 sysdate() 대신 now()를 사용하는 방법도 나쁘지 않을 것 같습니다.
부득이하게 sysdate()를 사용해야 한다면,
mysql 설정에서 -sysdate-is-now 옵션을 설정하여 sysdate()와 now()함수를 동일하게 적용할 수 있습니다~!!
이번 포스팅은 이것으로 마치고 다음에는 날짜 함수에 어떤 것들이 있는지도 살펴보도록 하겠습니다~!^-^/
'개발 관련 지식 > MySQL' 카테고리의 다른 글
[MySQL] Oracle 과 데이터타입 비교 (0) | 2014.08.12 |
---|---|
[MySQL] MySQL 실행(Start) 및 종료(Shutdown) (0) | 2014.08.05 |
[MySQL] MySQL 유저(User) 생성 (0) | 2014.08.03 |
[MySQL] MySQL 날짜 함수 정리 (0) | 2014.08.01 |
[MySQL] MySQL 설치(APM 이용) (0) | 2014.07.29 |