我将出发和到达时间存储为数据库中的分钟(int)。
id, transport_date, departure_time, arrival_time
'3','2017-08-01', '620', '650'
并在JS中将分钟转换为时间: 例如:
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 :(得分:1)
不是在INT类型或Varchar中存储时间,而是应该对这些列使用“datetime”数据类型,而在检索时,我们可以使用函数从这些列中提取时间。
例如:假设您已将数据类型更改为“datetime”,并且您的查询将是
SELECT id,transport_date,Time(departure_time)As DepartureTime,Time(arrival_time)As ArrivalTime 来自Transport_TABLE;
答案 1 :(得分:0)
我这样做的方法是存储 DATETIME 类型的列,但是连接一个虚构的日期。例如。 2018-01-01 13:05:00 (所有年份都是1月1日)。
然后,当我想通过查询获得时间时,我使用函数DATE_FORMAT
例如:
`SELECT DATE_FORMAT(MyColDateTime, '%H:%i:%s') TIME`
或者当我使用php时,我使用:
`$date = new DateTime('MyColDateTime');` `$time = $date->format('H:i:s');`
在 DATETIME 中存储的方式很有用,因为它使您可以使用所有函数在Mysql和编程语言中工作。