以格式存储时间的最佳方式HH:MySQL中的MM用于性能

时间:2017-07-05 09:58:46

标签: mysql time

我将出发和到达时间存储为数据库中的分钟(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?哪种方式更快,或者性能更好?

2 个答案:

答案 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和编程语言中工作。