[SQL] SQL 서버에서만 날짜와 날짜를 비교하는 방법
SQLSQL 서버에서만 날짜와 날짜를 비교하는 방법
Select * from [User] U
where U.DateCreated = '2014-02-07'
난 단지 '2014년 2월 7일'를 넣을 때 47.220 및 30 :하지만 데이터베이스에 사용자가 2014년 2월 7일 12에서 만든
그것은 모든 데이터를 표시하지 않습니다
해결법
-
==============================
1.이 같은 일을 유혹하지 마십시오 :
이 같은 일을 유혹하지 마십시오 :
Select * from [User] U where convert(varchar(10),U.DateCreated, 120) = '2014-02-07'
이것은 더 나은 방법입니다 :
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
참조 : 정말 평균 단어 "스 SARGable를"무엇을?
EDIT + where 절에서 데이터에 대한 기능의 사용을 피하고 (또는 조인 조건에서) 2 근본적인 이유가있다.
"데이터에 맞게 기준을 개정하여" "사용 스 SARGable 술어"를 설명하는 내 방법입니다
그리고 중 하나를 사이에 사용하지 마십시오.
http://sqlmag.com/t-sql/t-sql-best-practices-part-2 (Itzik 벤 웨이 코 뮤니시)
-
==============================
2.당신은 SQL Server 2008에서 또는 나중에 경우에 당신은 날짜 데이터 유형을 사용할 수 있습니다 :
당신은 SQL Server 2008에서 또는 나중에 경우에 당신은 날짜 데이터 유형을 사용할 수 있습니다 :
SELECT * FROM [User] U WHERE CAST(U.DateCreated as DATE) = '2014-02-07'
이 날짜 열이 다음 색인 경우이 여전히 스 SARGable을 인덱스를 활용하고있다 것이라는 점을 주목해야한다. 이 날짜와 날짜 시간에 대한 특별한 경우입니다.
당신은 SQL 서버가 실제로이 점을 전환>와 <절 것을 알 수 있습니다 :
SELECT * FROM [User] U WHERE CAST(U.DateCreated as DATE) = '2016-07-05'
-
==============================
3.귀하의 요청에 따라 [사용자]에서 선택 * U 곳 U.DateCreated = '2014년 2월 7일'
귀하의 요청에 따라 [사용자]에서 선택 * U 곳 U.DateCreated = '2014년 2월 7일'
SQL 서버는 정확한 날짜와 시간 즉 비교된다 (30 : 2014년 2월 7일 (12)를 비교하는 47.220 00 2014년 2월 7일과 : 00 : 평등 00.000). 비교의 결과가 거짓 이유입니다
날짜를 비교하는 동안 따라서, 당신은 또한 시간을 고려해야합니다. 당신이 사용할 수있는 U 곳 U.DateCreated BETWEEN '2014년 2월 7일'AND '2014년 2월 8일'[사용자]에서 *를 선택합니다.
-
==============================
4.중은 - 물론 이것은 옛 스레드이지만 완료 할 수 있습니다.
중은 - 물론 이것은 옛 스레드이지만 완료 할 수 있습니다.
당신은 간단하게 할 수 있도록 SQL 2008에서 당신은 날짜 데이터 유형을 사용할 수 있습니다 :
SELECT CONVERT(DATE,GETDATE()) OR Select * from [User] U where CONVERT(DATE,U.DateCreated) = '2014-02-07'
-
==============================
5.당신은 = 대신 LIKE 문을 사용할 수 있습니다. 하지만 당신은 VARCHAR로 먼저 변환해야합니다 날짜 스탬프이 작업을 수행합니다 :
당신은 = 대신 LIKE 문을 사용할 수 있습니다. 하지만 당신은 VARCHAR로 먼저 변환해야합니다 날짜 스탬프이 작업을 수행합니다 :
SELECT * FROM [User] U WHERE CONVERT(VARCHAR, U.DateCreated, 120) LIKE '2014-02-07%'
-
==============================
6.이것을 시도하십시오. 이 쿼리는 날짜 비교를 위해 사용 될 수있다
이것을 시도하십시오. 이 쿼리는 날짜 비교를 위해 사용 될 수있다
select * from [User] U where convert(varchar(10),U.DateCreated, 120) = '2014-02-07'
from https://stackoverflow.com/questions/25564482/how-to-compare-datetime-with-only-date-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 행의 예기치 않은 수의 영향을 저장 갱신, 삽입 또는 삭제 문 (0)에 대한 솔루션 (0) | 2020.04.10 |
---|---|
[SQL] JDBC 매김 (0) | 2020.04.10 |
[SQL] 클러스터 된 인덱스가 고유해야합니까? (0) | 2020.04.10 |
[SQL] 쿼리 패턴의 구현을 찾을 수 없습니다 (0) | 2020.04.10 |
[SQL] GUID의 SCOPE_IDENTITY ()? (0) | 2020.04.10 |