Làm cách nào để tôi có thể làm tròn thời gian trong MySQL đến 15 phút gần nhất (ví dụ: 0,15,30,45)?Cách làm tròn thời gian tới đoạn 15 phút gần nhất
Trả lời
SELECT SEC_TO_TIME(FLOOR((TIME_TO_SEC(CURTIME())+450)/900)*900)
Trong ví dụ này tôi đã sử dụng CURTIME() cho thời gian nhập, nhưng bạn có thể sử dụng bất kỳ trường thời gian nào.
900 giây = 15 phút (khoảng thời gian để làm tròn), 450 giây bằng một nửa (để cung cấp phần tử làm tròn). Tôi đã thử nghiệm với 1800/900 để có được nửa giờ gần nhất, nên làm việc với những người khác (600/300 trong 10 phút vv).
Dưới đây là một số mã thô mà tôi đã sử dụng có kết quả thực sự gần với những gì tôi muốn. Bởi vì tôi đã không sử dụng giây tôi chỉ cần chọn phút gần điểm nửa chiều.
SELECT
CASE
WHEN minute(timeIn) BETWEEN 0 and 7 THEN SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600)
WHEN minute(timeIn) BETWEEN 8 and 22 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:15:00')
WHEN minute(timeIn) BETWEEN 23 and 37 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:30:00')
WHEN minute(timeIn) BETWEEN 38 and 52 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:45:00')
WHEN minute(timeIn) BETWEEN 53 and 59 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '01:00:00')
END as 15_min
FROM
clock.punches;
SELECT FROM_UNIXTIME(TRUNCATE(UNIX_TIMESTAMP(NOW())/900,0)*900);
này có thể được khái quát hóa để làm tròn đến bất kỳ giá trị thời gian. 900 giây = 15 phút. Bạn có thể thay thế 900 bằng bất kỳ yếu tố làm tròn nào khác.
Có thể thay đổi 900 thành bất kỳ khoảng thời gian nào nhưng mã bạn đã cung cấp một mình sẽ luôn làm tròn xuống. – donL
sử dụng CEIL() thay vì TRUNCATE() –
Để có kết quả tốt hơn (nhanh hơn) sử dụng [chia số nguyên] (http://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_div) (mà làm tròn xuống, không lên nhưng điều đó không quan trọng) - hoặc trừ 'MOD 900' từ số thay vì chia và nhân. – Ariel
- 1. Thời gian vòng tới khoảng cách 15 phút gần nhất trong Excel
- 2. Làm thế nào tôi có thể làm tròn một ngày đến khoảng cách 15 phút gần nhất trong Perl?
- 3. Java làm tròn tới gần nhất 0,05
- 4. Android - TimePicker phút tới 15
- 5. Số làm tròn đến khoảng cách gần nhất
- 6. Thêm 15 phút vào thời gian hiện tại và chụp nhanh khoảng 15 phút
- 7. Truy vấn mysql nhóm theo khoảng thời gian 15 phút
- 8. Làm cách nào để làm tròn một DateTime thành Khoảng thời gian gần nhất
- 9. C# - làm tròn giá trị thời gian xuống giờ quý gần nhất
- 10. Tạo thường xuyên 15 phút chuỗi thời gian từ bất quy tắc chuỗi thời gian
- 11. Làm tròn số nguyên xuống gần nhất
- 12. Làm thế nào để làm tròn DateTime của thư viện Joda đến X phút gần nhất?
- 13. Làm tròn Java BigDecimal đến khoảng cách gần nhất
- 14. Thêm phút nhất định để thời gian trong MySQL
- 15. Từ thời gian (ví dụ "15 phút" hoặc "2 giây") thành "00:15:00" hoặc "00:00:02"
- 16. Định dạng Crontab - cứ 15 phút
- 17. làm tròn của NSdate đến giờ gần nhất trong iOS
- 18. Làm tròn lên đến 0,05 gần nhất trong JavaScript
- 19. Thêm phút vào đối tượng Thời gian
- 20. Joda Thời phút trong một thời gian hoặc khoảng
- 21. Làm thế nào để làm tròn dấu thời gian lên và xuống đến nửa giờ gần nhất?
- 22. làm tròn đến gần 50 cent
- 23. Orders Finding Duplicate (do thời gian gần)
- 24. Cách làm tròn giờ gần nhất bằng cách sử dụng đối tượng ngày JavaScript
- 25. ColdFusion - Tạo thời gian từ số phút
- 26. R vòng tới gần nhất .5 hoặc .1
- 27. Python -. Định vị các dấu thời gian gần nhất
- 28. Làm tròn đến 0,5 trong matlab gần nhất
- 29. Làm tròn phao cho yếu tố gần nhất?
- 30. tròn lần đến giờ gần nhất trong R
Bạn có thể cho chúng tôi biết bất kỳ điều gì bạn đã làm cho đến thời điểm này không? :-) Sau đó, chúng tôi có thể đề xuất cho phù hợp. – bonCodigo
Tại sao không sử dụng 'timestampdiff' bằng' mod'? Btw Tôi lấy bình luận trước đây của tôi khi tôi ddnt nhận thấy câu trả lời là do bạn. Bạn có thể vừa cập nhật câu hỏi của mình bằng cách thêm mã :-) – bonCodigo