如何在MySQL数据库中插入微秒?

时间:2014-03-31 20:05:00

标签: php mysql sql time

我正在制作Flash游戏。从游戏我得到数据到PHP,我需要将它插入数据库。所以我得到格式为0:00.000 [分钟:秒。微秒]的时间值。如何成功将其插入数据库?我的SQL表的类型是时间。格式为00:00:00 [小时:分钟:秒]。

问题是,如果我从游戏11秒279微秒(从游戏格式0:11.279)获得时间它到数据库只插入11分钟[00:11:00]。

如何插入数据库正常格式[minutes:seconds.micro-seconds]?

我的代码如下:

   <?php 
            $time= $_POST['time'];
            $username = $_POST['userName'];

            $mysqli = new mysqli("localhost","asd","asd","asd");
        if ($stmt = $mysqli->prepare("INSERT into myTable (time, userName) VALUE (?,?) ")) {

 if (!$mysqli->set_charset("utf8")) {
            printf("Error loading character set utf8: %s\n", $mysqli->error);
        } 
        $stmt->bind_param('ss', $time, $name);

           $stmt->execute();

           if ($stmt->error != '') {
               echo ' error:'.$stmt->error;
           } else {
               echo 'success';
           }
           $stmt->close();
        } else {
           echo 'error:'.$mysqli->error;
        }
        $mysqli->close();

更新

我的时间列在数据库中的样子:

db

1 个答案:

答案 0 :(得分:1)

您应该使用

创建具有微秒的时间列
TIME(number of decimals)

您可以在http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html

找到更多信息

编辑: 正如我在评论中提到的那样,您可以将其存储为十进制并编辑输入和输出。 这是一个例子。

$initial_value='11:02.234';
$exploded = explode(':',$initial_value);
$to_insert = $exploded[0]*60+$exploded[1];

echo "value to insert $to_insert";

要将mysql十进制输出转换为您的格式,请使用:

$value_from_the_db ='234.123';
$tmp = floor($value_from_the_db/60);
$to_print = $tmp .':' . (($value_from_the_db-$tmp * 60)>10?($value_from_the_db-$tmp * 60):'0'.($value_from_the_db-$tmp * 60));

echo "Value to show = $to_print";