반응형
MariaDB 트리거 시간 차이를 총 시간의 소수점과 시간의 10분의 1로 계산 항상 반올림
다음 열이 포함된 테이블이 있습니다.
start_time datetime
end_time datetime
billable_time decimal(3,1)
그billable_time
열은 삽입 시 트리거로 계산되고 업데이트 시 총 시간 수는 10진수로 계산되지만, 가장 가까운 숫자로 반올림하는 대신 항상 10진수로 반올림합니다.트리거를 만들 때 항상 소수점을 반올림하도록 만드는 방법을 알 수 없습니다.이 트리거는 정확하게 계산하지만 가장 가까운 숫자인 경우 반올림합니다.
SET new.billable_time = CAST(TIME_TO_SEC(TIMEDIFF(new.end_time, new.start_time))/3600 as decimal(3,1))
예:
start time = 2020-06-01 11:00:00
end_time = 2020-06-01 12:22:08
결과:
billable_time = 1.4
하지만 항상 반올림하면 1.5가 되어야 합니다.
사용해 보았습니다.CEIL()
그리고.CEILING()
함수이지만 가장 가까운 정수인 2로 반올림합니다.
어떻게 하면 제가 원하는 대로 할 수 있을지 모르겠습니다.이것을 트리거로 실행할 수 있습니까?어떤 도움이라도 주시면 대단히 감사하겠습니다.데이터베이스는 MariaDB v10.4.13입니다.
잘 부탁드립니다.
간단한 해결책은 0.5초 전의 값에 0.5초를 추가하는 것입니다.cast
ing it:
SET new.billable_time = CAST(
TIME_TO_SEC(TIMEDIFF(new.end_time, new.start_time))/3600 + 0.05
AS decimal(3,1)
)
사용할 수도 있습니다.ceil()
그 생각은 우선 다음과 같이 나누는 것입니다.360
대신에3600
그 다음에 와 함께.ceil()
그리고 마지막으로 나눈 값은10
:
SET new.billable_time =
CEIL(TIME_TO_SEC(TIMEDIFF(new.end_time, new.start_time))/360) / 10
언급URL : https://stackoverflow.com/questions/62141987/mariadb-trigger-calculating-time-difference-as-a-decimal-of-total-hours-and-tent
반응형
'programing' 카테고리의 다른 글
인터페이스 또는 TARGET_CLASS: 어떤 프록시 모드를 선택해야 합니까? (0) | 2023.08.15 |
---|---|
도커 구성:해당 이미지 없음 (0) | 2023.08.15 |
데이터베이스에 sql.gz 파일을 로드하려면 어떻게 해야 합니까?(계속) (0) | 2023.08.15 |
Mysql - 하나의 쿼리로 여러 테이블에서 삭제 (0) | 2023.08.15 |
jQuery를 사용하는 JSON과 AJAX의 차이점은 무엇입니까? (0) | 2023.08.15 |