Mariadb
將十進制日期格式設置為 24 小時 HH:MM:SS
如何在不進行四捨五入的情況下使用 SQL 將“十進制日”轉換為 HH:MM:SS 格式?
使用 MariaDB 5.x,其中一個 DB 欄位包含一個偽日期時間,如 day.time。
我可以使用以下方法從 TIME 列中拉出一天:
SELECT dbTime - MOD(dbTime, 1) AS 'Day'
我可以使用以下方法分隔小數時間:
MOD(dbTime, 1) AS 'Decimal Day'
我不知道如何將“十進制日”轉換為 HH:MM:SS 格式?
format
我使用以下 SQL 處理了兩個不同的數字,它為我提供了單獨的 HH:MM:SS 數字,但每當我嘗試使用、cast
或時,這些數字總是四捨五入convert
。SELECT .51923075705577 * 24 AS 'hour', mod((.51923075705577 * 24), 1) * 60 AS 'minute', mod((mod((.51923075705577 * 24), 1) * 60), 1) * 60 AS 'seconds';
上面顯示的時間是期望的結果。
感謝您對此提供任何幫助。
mysql> SELECT SEC_TO_TIME(86400 * .51923075705577); +--------------------------------------+ | SEC_TO_TIME(86400 * .51923075705577) | +--------------------------------------+ | 12:27:41.537410 | +--------------------------------------+
(一天有86400秒。)
mysql> SELECT SEC_TO_TIME(86400 * 0.999999); +-------------------------------+ | SEC_TO_TIME(86400 * 0.999999) | +-------------------------------+ | 23:59:59.913600 | +-------------------------------+ mysql> SELECT SEC_TO_TIME(86400 * 0.001); +----------------------------+ | SEC_TO_TIME(86400 * 0.001) | +----------------------------+ | 00:01:26.400 | +----------------------------+
為避免小數秒:
+---------------------------------------------+ | SEC_TO_TIME(ROUND(86400 * .51923075705577)) | +---------------------------------------------+ | 12:27:42 | +---------------------------------------------+ +---------------------------------------------+ | SEC_TO_TIME(FLOOR(86400 * .51923075705577)) | +---------------------------------------------+ | 12:27:41 | +---------------------------------------------+