본문 바로가기
MySql

MySQL의 datetime에 초 추가

by 베이스 공부 2020. 10. 31.
반응형

발생하는 특정 이벤트를 기반으로 날짜에 초를 추가하려고합니다. 종종 이러한 이벤트가 동시에 발생하면 너무 많은 초가 추가됩니다. 현재 PHP 및 MySQL에서 수행하는 방법은 다음과 같습니다.

$time_add_on = 15 - $seconds_left;
DATE_ADD(STR_TO_DATE(end_dt,'%Y-%m-%d %H:%i:%s'), INTERVAL '".$time_add_on."' SECOND

이것이하는 일은 'end_dt'에서 남은 현재 초에서 15를 빼고 'end_dt'에 더하는 것입니다. 기본적으로 15 초 남았습니다.

여기서 목표는 기본적으로 15 초를 더하거나 15 초만 남은 곳으로 날짜를 재설정하는 것입니다. 이로 인해 15 초 남음으로 재설정하는 대신 30 초 또는 45 초가 추가되는 문제가 발생합니다.

이 작업을 수행하는 가장 좋은 방법을 아는 사람이 있습니까?

 

해결 방법

 

UPDATE table end_dt = DATE_ADD(end_dt, INTERVAL 15 second)
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()

나는 그것이 당신이 원하는 것이라고 생각합니다. 기본적으로 end_dt가 지금으로부터 15 초 떨어져있을 때 end_dt에 15 초를 더합니다.

새 쿼리 수정 이 쿼리는 작동합니다.

UPDATE `table`
    SET end_dt = DATE_ADD(end_dt, INTERVAL (15 - TIMESTAMPDIFF(SECOND, NOW(), end_dt)) SECOND)
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()

 

참조 페이지 https://stackoverflow.com/questions/4055966

 

 

반응형

댓글