database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27343 게시물 읽기
No. 27343
해당월의 자료를 뽑아 올때.. between쓰나요?
작성자
임시손님
작성일
2008-01-25 11:38
조회수
2,928

안녕하세요?
만약에
2007년 08월의 자료를 뽑아온다면....
where 로 조건을 걸때
term between 2007-08-01 and 2007-08-31
이런식으로 하나요?
아니면
date_format(finish_date, '%Y-%m') = '2007-08'
이런식으로 하나요?
아니면 좀더 좋은 방법이 있나요?

이 글에 대한 댓글이 총 2건 있습니다.

그냥 통밥으로 생각해보면, 두번째로 제시하신 date_format(...)과 같은 방식은 문자열 비교가 될 듯 싶군요.

1만개의 row가 있다면, 1만번의 컨버젼과 1만번의 문자열 비교를 해야할 것이고, 첫번째 방식은 between에 들어가있는 두개의 날짜만 숫자로 변환되어 날짜 컬럼과 비교할 것 같습니다.

 

실제로는 어떨지 궁금하군요.

박현우(lqez)님이 2008-01-28 14:22에 작성한 댓글입니다.

제가 아는 바로는
term between 2007-08-01 and 2007-08-31
와 같은 표현은
1. field의 type이 date인 경우에는 괜찮지만 datetime인 경우에는 8월 31일의 대부분의 data( 00시00분00초 가 아닌 모든)가 빠지게 되고,
2. 끝날을 구하는 문제가 발생을 하는(2월-28, 29-, 기타월-30, 31- 중에서 어느 일이 말일 인지... ) 문제가 있고,

date_format(finish_date, '%Y-%m') = '2007-08'
와 같은 표현은 색인을 사용할 수 없으므로,

저는 보통
where '2007-08-01' <= term AND term < DATE_ADD( '2007-08-01', INTERVAL 1 MONTH )
와 같이 사용해서 range로 찾도록 하는 편입니다.

우욱님이 2008-02-01 20:48에 작성한 댓글입니다.
이 댓글은 2008-02-01 20:48에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27346VB에서 mysql를 odbc 없이 연결할 수 있을까요?
박태완
2008-01-28
2455
27345mysql 용량이 너무 빠릴 증가하는데.... [1]
kfckiller
2008-01-28
2976
27344캐초보가 질문 드립니다. - SQL문제 입니다...^^;
crash1
2008-01-27
2452
27343해당월의 자료를 뽑아 올때.. between쓰나요? [2]
임시손님
2008-01-25
2928
27342create table 시에 default 값을 꼭 해야 하는 이유가 있을까요? [1]
kevin
2008-01-25
2635
27341phpMyAdmin 에서 디비서버 확인하는데 설명좀... [1]
임두환
2008-01-24
2312
27339mysql 4.1.12 에서 4.1.22로 업그레이드할려고 하는데요 [1]
조원국
2008-01-24
2360
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다