다음과 같이 DATETIME
필드 가있는 테이블 TEST가 있습니다 .
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
시간에 관계없이이 행과 2014 년 3 월 19 일 날짜가있는 모든 행을 반환하는 쿼리가 필요합니다. 나는 사용해 보았다
select * from test where date = '03/19/2014';
그러나 행을 반환하지 않습니다. 내가 찾은 유일한 방법은 날짜의 시간 부분도 제공하는 것입니다.
select * from test where date = '03/19/2014 20:03:02.000';
답변
범위 또는 DateDiff 함수 사용
select * from test
where date between '03/19/2014' and '03/19/2014 23:59:59'
또는
select * from test
where datediff(day, date, '03/19/2014') = 0
다른 옵션은 다음과 같습니다.
-
데이터베이스 스키마를 제어 할 수 있고 시간 데이터가 필요하지 않은 경우 제거하십시오.
-
또는 유지해야하는 경우 날짜 값의 시간 부분이 제거 된 계산 된 열 속성을 추가합니다.
Alter table Test
Add DateOnly As
DateAdd(day, datediff(day, 0, date), 0)
또는 최신 버전의 SQL Server에서 …
Alter table Test
Add DateOnly As
Cast(DateAdd(day, datediff(day, 0, date), 0) as Date)
그런 다음 쿼리를 다음과 같이 작성할 수 있습니다.
select * from test
where DateOnly = '03/19/2014'
답변
간단한 대답;
select * from test where cast ([date] as date) = '03/19/2014';
답변
MySQL 5.6을 사용하고 있으며 날짜 시간에서 날짜 부분 만 추출하는 DATE 함수가 있습니다. 따라서 질문에 대한 간단한 해결책은-
select * from test where DATE(date) = '2014-03-19';
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
답변
select * from test
where date between '03/19/2014' and '03/19/2014 23:59:59'
이것은 정말 나쁜 대답입니다. 두 가지 이유가 있습니다.
1. 23.59.59.700 등과 같은 시간에 어떤 일이 발생합니까? 23:59:59보다 큰 시간과 다음 날이 있습니다.
2. 동작은 데이터 유형에 따라 다릅니다. 쿼리는 datetime / date / datetime2 유형에 대해 다르게 작동합니다.
23 : 59 : 59.999로 테스트하면 날짜 유형에 따라 다른 반올림이 발생하기 때문에 더욱 악화됩니다.
select convert (varchar(40),convert(date , '2014-03-19 23:59:59.999'))
select convert (varchar(40),convert(datetime , '2014-03-19 23:59:59.999'))
select convert (varchar(40),convert(datetime2 , '2014-03-19 23:59:59.999'))
-날짜 값은 ‘잘게 썬 것’입니다. -datetime의 경우 값은 다음 날짜로 반올림됩니다. (가장 가까운 값). -datetime2의 경우 값이 정확합니다.
답변
이것은 MS SQL 서버에서 나를 위해 작동합니다.
select * from test
where
year(date) = 2015
and month(date) = 10
and day(date)= 28 ;
답변
이 시도
select * from test where Convert(varchar, date,111)= '03/19/2014'
답변
당신은 이것을 시도 할 수 있습니다
select * from test where DATEADD(dd, 0, DATEDIFF(dd, 0, date)) = '03/19/2014';