2017-07-05 43 views
1

我將出發和到達時間存儲爲數據庫中的分鐘數(int)。以格式HH:MM存儲時間的最佳方式

id, transport_date, departure_time, arrival_time 
'3','2017-08-01',  '620',  '650' 

和分鐘轉換成時間在JS: e.g:

public String getDepartureTime() { 
    return minuteToTime(departureTime); 
} 



public static String minuteToTime(int minute) { 
    int hour = minute/60; 
    minute %= 60; 
    String p = "AM"; 
    if (hour >= 12) { 
    hour %= 12; 
    p = "PM"; 
    } 
    if (hour == 0) { 
    hour = 12; 
    } 
    return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + " " + p; 
} 

,這將返回620"10:20 AM"。這是在數據庫中存儲時間的好方法嗎?或者我應該只是將列數據類型更改爲varchar並將時間保存爲10:20 AM?哪種方式更快,或者性能更好?

+0

將日期和時間作爲日期時間存儲在一個字段中 – Jens

+0

此鏈接應幫助https://stackoverflow.com/questions/12337195/how-to-part-date-and-time-from-datetime-in-mysql – alistaircol

+0

In一般來說,如果我有一個價格,我使用'DECIMAL',如果我有一個日期,我使用'DATE',如果我有一段時間,我使用'TIME'。我需要非常具體的用例來對我的數據進行串聯。無論如何,您的總體設計似乎假設交通運輸不會持續數天,確保基礎數據符合這一點。 –

回答

1

不應將時間存儲在INT類型或Varchar中,您應該爲這些列使用「datetime」數據類型,並在檢索時可以使用函數從這些列中提取時間。

例:假設你已經改變了數據類型爲 '日期時間' 和您的查詢就會

SELECT ID,transport_date,時間(DEPARTURE_TIME)作爲DepartureTime,時間(ARRIVAL_TIME)作爲ArrivalTime FROM Transport_TABLE;