mysql 시간 비교 질문입니다. 0 4 1,061

by Tension [MySQL] [2017.05.26 11:23:05]


오랜만에 질문을 올리는것 같습니다 ㅠ 

 

단순하게 정리 하면 

 

테이블에 date타입의 컬럼이 있을때

오늘 날짜의 지금 시간인 데이터를 가져오려 합니다

 

현재 이렇게 사용하고있는데

select * from T

where DATE_FORMAT(COL, '%Y-%m-%d') = DATE_FORMAT(now(), '%Y-%m-%d')

and hour(COL) = hour(now())

 

상당히 느립니다 ㅠ 


DATE_FORMAT(COL, '%Y-%m-%d %h') = DATE_FORMAT(COL, '%Y-%m-%d %h')

이렇게 사용해봤지만 5초 > 3.7초로 변했을뿐 1초안쪽으로 들어갈수있을거같은데 안되네요 ㅠㅠ

 

비교하는데 왼쪽에는 DATE_FORMAT을 안쓰는게 좋다고도 배운거같은데

 

어떻게 해야할지 모르겟네요 

 

답변주시면 감사합니다 ( _ _ )

by 주킹 [2017.05.26 12:52:35]

오라클의 경우 자동형변환이 잘되서...크게 이슈는 없지만

다른 DBMS쪽은 형변환이 민감합니다. 대부분..

COL에 들어있는 data를 파악하고 그에 맞게 우변을 고치는게 맞을거같네요


by Tension [2017.05.26 13:01:42]

COL 값이 date 이긴 하지만 그냥 COL = now() 이렇게 하게되면 초까지 완전히 맞는 데이타를 가져오기 때문에 ㅠ

(해당 시간까지만 맞는 데이터이어야합니다 ㅠ)

어쩔수없이 COL데이터를 변환을 해야하는데 모르겟네요 ㅠㅠ


by 마농 [2017.05.26 13:12:33]
SELECT *
  FROM t
 WHERE col >= DATE_FORMAT(NOW()                  , '%Y-%m-%d %H')
   AND col <  DATE_FORMAT(NOW() + INTERVAL 1 HOUR, '%Y-%m-%d %H')
;

 


by Tension [2017.05.26 13:30:34]

와우. 감사합니다 ㅠㅠ 이렇게 해야하는군요 ㅠㅠ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입