programing

날짜별 엔트리 선택 - >= NOW(), MySQL

codeshow 2023. 10. 24. 21:40
반응형

날짜별 엔트리 선택 - >= NOW(), MySQL

이벤트 일정표가 있는데 날짜가 오늘보다 크거나 같은 이벤트를 선택하려고 합니다.다음 SELECT 문을 사용하면 나중의 이벤트만 검색됩니다(> NOW()).

<?php    
$db->query("SELECT * FROM events WHERE event_date >= NOW()");
?>

현재 또는 미래의 모든 이벤트를 선택하려면 어떻게 해야 합니까?

감사해요.

다음을 찾고 있습니다.

$db->query("SELECT * FROM events WHERE event_date >= CURDATE()");

또는:

$db->query("SELECT * FROM events WHERE event_date >= CURRENT_DATE()");

이 쿼리를 사용하는 이유:

SELECT * FROM events WHERE event_date >= NOW()

...Now()에는 날짜와 시간이 포함되어 있기 때문에 미래의 기록을 반환합니다.그리고 해당 시간 부분은 [function or triggering] 문이 실행되기 시작한 시간을 나타냅니다.즉, DATTIME 데이터 유형에서 하루의 시작은 다음과 같습니다.2010-06-24 00:00:00(YYYY-MM-DD HH:MM:SS, micro second precision으로), NOW()는 다음과 같은 것을 보여줍니다.2010-06-24 14:24:31...

옵션은 다음과 같습니다.

SELECT * FROM events WHERE event_date >= DATE(NOW())
SELECT * FROM events WHERE event_date >= DATE(CURRENT_TIMESTAMP)
SELECT * FROM events WHERE event_date >= CURRENT_DATE()
SELECT * FROM events WHERE event_date >= CURRDATE()

당신도 할 수 있습니다.

<?php    
$db->query("SELECT * FROM events WHERE UNIX_TIMESTAMP(event_date) >=     UNIX_TIMESTAMP(NOW())");
?>

CURTIME()을 사용하는 것보다 더 정확한 방법은 날짜뿐만 아니라 시간을 사용하는 경우입니다.

시간이 아닌 날짜에만 관심이 있는 경우 CURDATE()를 사용합니다.NOW().

물론 동의어를 대신 사용할 수도 있습니다.CURRENT_DATE(그 뒤에 괄호가 있건 없건) 하지만 내가 말한 문서들은CURDATE첫 번째 철자로 (-).

당신의 문제는 지금이 매우 정확하다는 것입니다.그래서 오늘과 그 이전의 날짜들은 하루의 시작에 시작했기 때문입니다.

사용 방법:

select * from events where datediff(event_date, now()) >= 0;

CURDATE와 NOW의 차이점은 다음과 같습니다.

mysql> select CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2017-03-17 |
+------------+
1 row in set (0.03 sec)

mysql> select NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2017-03-17 09:04:45 |
+---------------------+
1 row in set (0.00 sec)

나는 항상 정확하게 하기 위해 NOW를 사용합니다.

언급URL : https://stackoverflow.com/questions/3114769/selecting-entries-by-date-now-mysql

반응형