MySQL에서 날짜 비교


94

주어진 두 날짜 사이에있는 데이터베이스의 날짜를 비교하고 싶습니다. 데이터베이스의 열은 DATETIME이며 datetime 형식이 아닌 날짜 형식과 만 비교하고 싶습니다.

SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'

위의 SQL을 실행할 때이 오류가 발생합니다.

SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 'us_reg_date, 120)> ='2000-07-05 'AND CONVERT (CHAR (10), us_reg_date, 120) <='2011- '근처에서 사용할 올바른 구문을 확인하십시오. 라인 1

이 문제를 어떻게 해결할 수 있습니까?

답변:


95

아래 쿼리를 시도해 볼 수 있습니다.

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)

38
Google에서 온 사람들을 위해 : mysql의 날짜 유형은 yyyy-mm-dd 형식으로 제공됩니다.
Błażej Michalik 2015

88

SQL 서버 구문 문자열로 날짜를 변환. MySQL에서는 DATE 함수를 사용하여 datetime에서 날짜를 추출 할 수 있습니다 .

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'

그러나 열의 인덱스를 활용 us_reg_date하려면 대신 이것을 시도 할 수 있습니다.

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day

1
색인을 활용 해 주셔서 감사합니다. 쿼리에 "+ interval 1 day"절이 없어야한다고 생각합니다.
Jurgenfd

10

이것은 나를 위해 작동합니다.

select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

형식 문자열 '% Y- % m- % d'및 입력 날짜 형식을 확인합니다.


6

나는 답을 얻었다.

다음은 코드입니다.

SELECT * FROM table
WHERE STR_TO_DATE(column, '%d/%m/%Y')
  BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
    AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

2

이것이 나를 위해 일한 것입니다.

select * from table
where column
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
 AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

로드하는 데 시간이 오래 걸리므로 이전 솔루션에서 STR_TO_DATE (열, '% d / % m / % Y')를 변경해야했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.