2013-10-18 2 views
1

datetime 열에 Like 연산자를 사용하고 싶습니다. 다음 열의 값은 다음
2013년 8월 31일 17 : 54 : 52.000
2013년 8월 31일 17 : 54 : 52.000Datatime 열의 연산자가 비슷합니다.

내 쿼리는 아래와 같다 :

SELECT * FROM table where created_date Like '%54%' 

그것은 잘 작동합니다. 하지만 '% 54 %'대신 '% 52 %'를 검색하면 아무 것도주지 못합니다. (나는 분까지 검색 할 때 그것은 노력하고 있습니다,하지만 난 초 또는 밀리 초를 검색 할 때 작동하지 않습니다.)

나는 다음 URL에서 보았다 그것은
SQL LIKE Statement on a DateTime Type

내가 원하는을하고있다 이유를 알고, 왜 이것이 일어나고 연산자가 datetime 형식 열과 함께 작동하는지 봅니다.

+1

정말 이런 식으로하고 싶다면'convert (varchar (20), created_date, 121)'를 명시 적으로 호출하여 올바른 형식이'like'를 사용하여 비교되는지 확인하십시오. 하지만 라훌의 대답을 잘 사용하십시오. – LuigiEdlCarno

+1

이 유형 필터링의 의미를 설명 할 수 있습니까? –

+0

54 분, 54 초 또는 54ms? –

답변

3

날짜 부분을 추출하려면 SQL Server의 DATEPART 연산자를 사용하는 것이 좋습니다.

그리고 예 등이 될 수있다 : -

SELECT * FROM table 
where DATEPART(minute,created_date)=54 

편집 : -

나는 이유를 알고 싶어이 일이 어떻게 날짜 형식 열 작동 연산자 같은 이유 .

사실 DATETIME 변수 LIKE 연산자에 대한 SQL Server에서 주어진 직접적인 지원이없는하지만 당신은 항상 VARCHAR에 DATETIME을 캐스팅 한 다음 원하는대로 LIKE 연산자를 사용하려고 할 수 있습니다. 보조 노트에

: -

MSDN 말한다 : -

DATEPART는 선택 목록에서 사용할 수있는 WHERE, HAVING, GROUP BY와 BY 절 ORDER.

SQL Server 2012에서 DATEPART는 datetime2 형식으로 문자열 리터럴을 암시 적으로 변환합니다. 즉, DATEPART는 날짜가 문자열로 전달 될 때 YDM 형식을 지원하지 않습니다. 문자열을 datetime 또는 smalldatetime 형식으로 명시 적으로 캐스팅해야 YDM 형식을 사용할 수 있습니다.

+0

DATETIME에 대한 LIKE 연산자에 대한 직접 지원이 없다고 말하면서 datetime 열에서 분을 검색 할 때이 연산자가 작동하는 이유는 무엇입니까? 또한 전체 datetime에서 문자열을 검색하고 싶습니다. 나는 날짜 또는 분 또는 시간 값으로 만 검색하고 싶지 않습니다. –

+1

날짜는 문자열이 아니며 int는 문자열이 아닙니다. 'LIKE '로 검색 할 문자열이 없습니다. –

0

'LIKE'연산자와 다른 데이터베이스에서 제공하는 정규식 연산자를 사용하여 텍스트 값을 처리합니다. 날짜는 텍스트 값이 아니며, 그 자체로 separata 유형입니다.

그것은 당신이 데이터베이스의 날짜에 LIKE를 사용할 수없는 이유 (INT 또는 DATETIME 또는 DATETIMEOFFSET 등) 텍스트가 아닌 유형에 텍스트 연산자를 적용하는 약간의 의미가 있습니다. 우선, 값은 텍스트로 저장되는 것이 아니라 구현 관련 바이너리 형식으로 저장됩니다.

그런 다음 CAST를 사용하여 날짜의 특정 텍스트 표현에 LIKE을 사용할 수 있지만 그 표현이 무엇인지 분명히해야합니다.각기 다른 로케일은 날짜를 첫 번째, 일 년, 월 첫째 또는 월 등으로 다르게 표시합니다. 무엇을 찾고 싶습니까?

또한 54는 무엇입니까? 54 분 54 초 또는 654 밀리 초?

유일한 현명한 해결 방법은 DATEPART를 사용하여 날짜의 특정 부분을 확인하거나 BETWEEN 연산자를 사용하여 범위를 확인하는 것입니다.

+0

@PenagiotisKanavos 54는 datetime에 저장된 시간입니다. 나는 당신의 대답에 만족합니다. 하지만 내 질문은 LIKE 연산자를 사용하여 datetime에서 분을 검색하면 결과가 나에게 표시되지만, datetime에서 초 또는 밀리 초를 검색하면 아무런 결과도 얻지 못합니다. –

관련 문제