phpmysql - 存储时间和数据的数据类型使用mysql在1列中的状态?

时间:2018-04-03 23:34:45

标签: php sql phpmyadmin

Helo家伙我有像这张表Py2Exe documentation

这样的样本数据

当时存储的最佳数据类型是什么?在时间列上,我需要能够存储DQ,DNS和DNF等术语。

注意:(DQ =取消资格,DNS =未启动,DNF =未完成)

3 个答案:

答案 0 :(得分:2)

所以我理解的是,您希望将它们从单独的表中存储到一个表中的一列。使用VARCHAR。 VARCHAR用于存储各种字符,而不仅仅是字母。您不能在TIME或FLOAT列数据类型中存储字母,因此如果您必须将它们作为一列存储在一个表中,那么这些不是选项。

答案 1 :(得分:0)

$json = "{time:'9.41', status:'DQ'}";

你可以存储这样的数据,依靠JSON存储时间和时间。状态在一栏中。

要从PHP数据数组创建此数据(例如,如果要提取当前数据,将其设置为JSON格式,并更新现有数据集),则可以执行此操作...

$array = array("Athlete 1"=>array("time"=>"9.41", "status"=>"DQ"),"Athlete 2"=>array("time"=>"0.00", "status"=>"DNS")); 
foreach($array as $athlete=>$data){
 $json = json_encode($data); // encode their specific data
 // insert json data string into athlete time/status cell 
}

...或

$array = array("time"=>"9.41", "status"=>"DQ");
$athleteJSON = json_encode($array); // get json string for just this one athlete

然后你将它从数据库中拉出来,然后用PHP解析它......

$data = json_decode($json, true); 
$time = $data['time'];
$status = $data['status']; 

我个人认为你应该将时间存储在一列中,将状态存储在另一列中。这种方式更有意义。如果你不能这样做,那么将数据存储在JSON中将允许你的数据库做你想要的,并且可以被大量访问这些数据的不同语言使用。

也可以......

$time = 9.41;
$status = "DQ";
$data = "$time|$status";

这变成了一个字符串......“9.41 | DQ”

将其存储在数据库中,然后将其取出...

$data = "9.41|DQ"; // (taken from database result)
list($time, $status) = explode("|", $data); // split time & status
// that's it, now you have time & status variables for that cell! 

此外,这里有一些合理的专栏意见......

id (auto increment, integer, primary key), 
tournament (varchar 255), 
event (int 11), 
event_name (varchar 255), 
heat (int 11), 
heat_desc (varchar 255-male/female/etc), 
athlete_name (varchar 50), 
time (varchar 15) ~ so float can't mess up decimal places, 
status (varchar 5 - for dq/dns/dnf), 
lane (int 11)

答案 2 :(得分:0)

您可以使用秒或毫秒...然后编码

DNS = nil 
DFN = 0xFFFFFFFF
DQ  = 0xFFFFFFFE

那样DNF和DQ就这样排序......

您只需要确保在进行显示时不要将这些高值转换为时间。