2014-02-20 2 views
0
을 통해 SQL 서버 2012에서 날짜를 검색하는 방법

이의 내가 같은 테이블이 있다고 가정 해 봅시다 샘플 데이터는 다음과 같을 수 있습니다.두 개의 열

EventID StartDateTime    EndDateTime 
----------------------------------------------------------- 
    1  2014-02-21 00:00:00.000 2014-02-23 23:59:59.000 
    2  2014-02-22 00:00:00.000 2014-02-24 23:59:59.000 

은 내가 위의 코드를 시도 2014-02-23 00:00:00.000

SELECT 
* 
FROM 
    Event 
WHERE 
    (StartDateTime <= '2/23/2013 00:00:00 AM') 
    OR (EndDateTime >= '2/23/2013 00:00:00 AM') 

에서 일어나고있는 무슨 이벤트를 검색 할하지만 올바른 결과를 반환하지 않습니다.

나는 뭔가를 놓친가요? 내가 누락 된 부분을 말해 줄 수 있니?

+0

select * from event 여기서 startdatime과 enddatetime 사이에 '2/23/2013 00:00:00 AM'이 올바르게 입력되지 않습니까? 만약 내가 잘 기억한다면 그것은 끝내주는 이유에 약간을 더해야 할 것입니다. –

답변

1

사용이 쿼리

SELECT * FROM Event 
    WHERE '2014-02-23 00:00:00.000' BETWEEN StartDateTime and EndDateTime 
0

WHERE 절에 Between 연산자를 사용하십시오. 테스트 할 범위를 지정합니다.

  • 운영자 간의 경계 케이스 포함입니다.

    BETWEEN은 test_expression의 값이 begin_expression의 값보다 크거나 같고 end_expression의 값보다 작거나 같은 경우 TRUE를 반환합니다.

1

당신이 시도 했습니까? 당신은 OR 원하지 않는

DECLARE @EventTime DATETIME 
SET @EventTime = '20140223 00:00:00' 

SELECT * 
FROM EVENT 
WHERE @EventTime BETWEEN StartDateTime AND EndDateTime 
+0

아무것도 반환하지 않습니다! –

+0

설정하려고 @EventTime = '20130223 00:00:00' – Weissvonnix

+0

당신의 Sampledata에 2014에 대한 항목이 포함되어 있습니다 ... @EventTime = '20140223 00:00:00';-) 설정하려고합니다 – Weissvonnix

2

, 당신은 AND을 원한다. 또한

SELECT 
* 
FROM 
    Event 
WHERE 
    StartDateTime <= '20130223' 
    AND 
    EndDateTime > '20130223' 

, 내가 심각하게 당신이 반 오픈 이러한 날짜 범위를 저장하기 시작하는 것이 좋습니다 것입니다 : 당신은 날짜 전이나 시작 이벤트는 사용자가 지정한 날짜 이후에 종료 가 지정합니다 시간 부분이 중요한 경우 독점 종료 날짜가 포함됩니다. 그것은 더 깨끗하게 읽기 전용 엔드 포인트를 계산하기 위해 많은 쉽게 : 현재 범위가 할대로, 하루의 마지막 순간을 제외하지 (임의)의 장점을 가지고

INSERT INTO Event(EventID,StartDateTime,EndDateTime) values 
(1,'2014-02-21T00:00:00.000','2014-02-24T00:00:00.000'), 
(2,'2014-02-22T00:00:00.000','2014-02-25T00:00:00.000') 

.

+0

변환하는 방법 '2014-02 SQL Server 2012에서 -21 00 : 00 : 00.000 '에서 20140221로? –