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
운영게시판
최근게시물
MS-SQL Q&A 6678 게시물 읽기
No. 6678
시작 날짜와 종료 날짜 기간 동안의 특정 시간대의 데이터 검색
작성자
궁금이
작성일
2013-06-11 09:48
조회수
11,533

시작 날짜와 종료 날짜 기간 동안의 특정 시간대의 데이터를 검색 할려고 합니다.

날짜 검색은 되는데 시간 검색이 00(시작 시간) ~ 00 (종료 시간) 검색하면 제대로 결과가 나오지 않네요.

제가 SQL 문을 "select s_date, e_date, s_time, e_time from aaa where s_date >= 시작 날짜 and e_date <= 종료 날짜 and s_time >=시작시간 and e_time<=종료시간

 

== 구 성 ==

 

 시작  날짜 : YYYY-MM-DD

종료 날자 : YYYY-MM-DD

 콤보 박스  시작 시간 : 00 ~ 23

 콤보 박스  종료 시간 : 00 ~ 23 

 

 

이 글에 대한 댓글이 총 2건 있습니다.
where 절의 컬럼 및 파라매터가 모두 문자계열 타입이라는 가정하에 아래와 같이 쿼리를 수정하면 될 듯 합니다.
당연한 이야기 이지만, 성능은 고려되지 않았습니다.
 
select s_date, e_date, s_time, e_time 
from aaa 
where (s_date + s_time) >= (시작 날짜 + 시작시간)
and (e_date + e_time) <= (종료 날짜 + 종료시간);
 
SQL Server 이고... 제대로된 성능이 필요하다면, 테이블 디자인을 바꾸는 것이 좋을 듯 합니다.
디자인을 바꾸지 않고 성능을 해결하려면 Function based index를 생성해야 하는데... 
제가 최근에 써본 SQL Server는 지원하지 않았었습니다.
지금은 하려나.. 모르겠습니다.
이성필(splee75)님이 2013-06-11 11:41에 작성한 댓글입니다.

 ( 

시작 날짜 < 종료 날짜 and 
(s_date = 시작 날짜 and s_time >=시작시간) or ( 시작 날짜 > s_date and 종료 날짜 < e_date) or (e_date = 종료 날짜 and e_time <= 종료시간 )
)
)
or
( 시작 날짜 = 종료 날짜 and s_time >=시작시간 and e_time<=종료시간 )
으로 where 조건을 변경을 하시면 되겠습니다.
 
위에서 말씀해주신 function based index는 계산된 열(computed column)을 생성하여 해당 열에 index를 생성하거나 indexed view를 생성하는 방법으로 가능합니다.
우욱님이 2013-06-12 12:22에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6682쿼리문을 어떻게 만들지 .. 쿼리문을 만들고 싶습니다. [4]
둥둥이
2013-06-14
9196
6681쿼리문 질문좀 드리겠습니다.^^ [1]
SH
2013-06-14
8135
6679MS-SQL 해당년도 주(week) 구하기 [2]
홍길동
2013-06-11
9428
6678시작 날짜와 종료 날짜 기간 동안의 특정 시간대의 데이터 검색 [2]
궁금이
2013-06-11
11533
6677WITH(NOLOCK) 요... [3]
초보입니다.
2013-06-05
10572
6676csv 파일 import 시키는 방법 문의 [1]
김상철
2013-06-04
11052
6675dvd대여프로그램을 만들고있는데 질문있습니다. [2]
김순인
2013-06-02
8732
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다