[mysql] MySQL에서 날짜 시간이 오늘보다 크거나 같음

다음을 수행하는 가장 좋은 방법은 무엇입니까?

SELECT * FROM users WHERE created >= today;

참고 : 작성은 날짜 / 시간 필드입니다.



답변

SELECT * FROM users WHERE created >= CURDATE();

하지만 난 당신이 의미하는 것 같아 created < today


답변

SELECT * FROM myTable WHERE  DATE(myDate) = DATE(NOW())

더 읽기 :
http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html


답변

SELECT * FROM users WHERE created >= NOW();

열이 날짜 시간 유형 인 경우


답변

‘만들기’가 날짜 / 시간 유형 인 경우

SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);

CURDATE ()는 ‘2013-05-09 00:00:00’도 의미합니다


답변

답변이 잘못되었습니다. 언급 된 문제는 DateTime, 그러나 필요한 것은 단지 언급 된 것 CURDATE()입니다.

이에 대한 가장 짧은 정답 은 다음과 같습니다.

SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;


답변

열에 인덱스가 있고 함수가 열에 적용되면 인덱스가 작동하지 않고 전체 테이블 스캔이 발생하여 쿼리 속도가 느려집니다.

인덱스를 사용하고 날짜 / 시간 을 오늘 / 현재 날짜 와 비교하기 위해 다음을 사용할 수 있습니다.

OP 솔루션 :

select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')

오늘 데이터를 얻는 샘플 :

select * from users
where
    created >= CONCAT(CURDATE(), ' 00:00:00') AND
    created <= CONCAT(CURDATE(), ' 23:59:59')

또는 짧게 BETWEEN을 사용하십시오.

select * from users
where created BETWEEN
      CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')


답변

SELECT * FROM users WHERE created >= now()