我有一個十進制值說123.77
mysql如何十進制值轉換爲度,分,秒
現在我想將其轉換成相應的使用MySQL degree
,minute
,second
值。 我嘗試了幾種方法,但不能得到正確的答案。請幫忙。
我有一個十進制值說123.77
mysql如何十進制值轉換爲度,分,秒
現在我想將其轉換成相應的使用MySQL degree
,minute
,second
值。 我嘗試了幾種方法,但不能得到正確的答案。請幫忙。
下面是
查詢,
SET @deci = 123.77;
SELECT FLOOR(@deci) Degrees,
FLOOR((@deci - (FLOOR(@deci))) * 60) Minutes,
((@deci - (FLOOR(@deci))) * 60 -
FLOOR((@deci - (FLOOR(@deci))) * 60)) * 60 SECONDS
吳宇森給出的答案,而正確的正值,不會給負值正確的結果。我已經調整了他的答案,以考慮到這一點。
SET @deci = -123.77;
SELECT SIGN(@deci)* FLOOR(ABS(@deci)) Degrees,
FLOOR((ABS(@deci) - (FLOOR(ABS(@deci)))) * 60) Minutes,
((ABS(@deci) - (FLOOR(ABS(@deci)))) * 60 -
FLOOR((ABS(@deci) - (FLOOR(ABS(@deci)))) * 60)) * 60 SECONDS
開箱,通過借用思考不同的巴比倫爲基礎的指標:
mysql> SELECT TIME_FORMAT("%H°%i'%s", SEC_TO_TIME(ROUND(3600 * -1.234)));
+-------------------------------------------------------------+
| TIME_FORMAT("%H°%i'%s", SEC_TO_TIME(ROUND(3600 * -1.234))) |
+-------------------------------------------------------------+
| -01:14:02 |
+-------------------------------------------------------------+
mysql> SELECT TIME_FORMAT("%H°%i'%s", SEC_TO_TIME(ROUND(3600 * -123.77)));
+--------------------------------------------------------------+
| TIME_FORMAT("%H°%i'%s", SEC_TO_TIME(ROUND(3600 * -123.77))) |
+--------------------------------------------------------------+
| -123:46:12 |
+--------------------------------------------------------------+
(該ROUND
是爲了避免讓3位小數的回答)
請問是什麼你嘗試過的方法? –
這個值是以弧度,十進制度,漸變還是什麼? – lanzz