10 关于在数据库中存储“时间”的一个简单问题。我正在记录用户运行时间,其格式为00:00:00:00(小时,分钟,秒,毫秒)。 我本来打算将其存储为,TIME但是后来我意识到MySQL不支持这种类型的毫秒。 我将存储从用户秒表获取的实际时间,而不是他们运行并完成的时间(这将在插入之前进行计算)。 最好使用哪种字段类型?我在想double或者float,但是我不确定是否行得通? mysql best-practices timestamp — 艾略特 source
6 就个人而言,我会在持续时间内使用整数类型 示例:无符号int列中的340,000毫秒是340000。 对我来说,日期时间,时间,日期等是明确的时间点。在这种情况下,340秒是没有意义的。具有起始date/time允许的持续时间将被添加,当然 — gbn source 3 interval为此,有一个标准的SQL 数据类型。但是并非所有的DBMS(当然也不是MySQL)都支持此功能。 — a_horse_with_no_name 2012年 感谢您的回答,我是否需要将其转换为当前格式为00:00:00:00的标准格式?我可以将列设置为允许该类型的格式吗? — Elliott 2012年 @Elliott:可以展示。否则就是一个数字 — gbn 2012年 1 请注意,您的格式可能是(或出于可读性考虑)00:00:00.000(请注意以点代替冒号和3位数字表示毫秒。) — Jannes 2012年
2 这取决于您要测量多长时间。如果您录制的时间不会比常规的无符号int长2 ^ 32或4294967296 ms,那很好。大约相当于50天的时钟时间,顺便说一句。 如果您存储的是Unix时间戳或更长的间隔,请考虑使用bigint。这将为您提供8个字节的空间,或者能够记录长达1.84467440737096e + 19 ms(大约5亿年)的时间 — 阿特克斯巴 source
1 如果你使用MySQL 5.6.4或更高版本,可以使用TIME(3),DATETIME(3)并且TIMESTAMP(3)列类型存储多达6位小数(替换3用的小数位数你需要)。小数部分添加到时间串中点后;例如:2018-09-08 17:51:04.781。 官方参考 — 精巧 source
interval
为此,有一个标准的SQL 数据类型。但是并非所有的DBMS(当然也不是MySQL)都支持此功能。