2017-07-05 44 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;