查询838:59:59中的MySQL时间值?

时间:2016-11-10 07:03:31

标签: php mysql

我想问一下。

我试图将TIME值添加到mysql数据库中。但是数据库中添加的值是 838:59:59

它只会在 838:59:59 中存储到timein列中。超时列结果为 00:00:00 值。

以下代码

<?php
    $connect      = mysqli_connect("localhost", "root", "root", "database");
    global $connect;   

    if(isset($_POST['Submit']))
    {   
        $timeout            = strtotime('08:30:00');
        $timein             = strtotime('12:30:00');

        $time_out_user      = strtotime($_POST['timeout']);
        $time_in_user       = strtotime($_POST['timein']);

        if(($time_out_user >= $timeout) && ($time_out_user <= $timein))
        {
            echo "Duplicate time";
        }
        else
        {
            $add         = "INSERT INTO table (timeout,timein)
                                       VALUES ('$time_out_user','$time_in_user')";
            $addDateTime = mysqli_query($connect,$add);
            echo "Time added";
        }
    }
?>
<form action="test.php" method="post">  
    <table> 
        <tr>
            <td><i class="fa fa-unlock-alt"></i> </td>
            <td>Time Out: </td>
            <td><input type ="time" name="timeout" size="30"></td>
        </tr>
        <tr>
            <td><i class="fa fa-unlock-alt"></i> </td>
            <td>Time In: </td>
            <td><input type ="time" name="timein" size="30"></td>
        </tr>
    </table>    

    <p><input class="btnSuccess" type ="submit" name="Submit" value="Submit"> </p>              
</form>

感谢。

2 个答案:

答案 0 :(得分:2)

答案很简单,就是该字段可以容纳的最大值。

  

MySQL以'HH:MM:SS'格式检索并显示TIME值(或   'HHH:MM:SS'格式表示大小时值)。 TIME值的范围可以从   '-838:59:59'到'838:59:59'。小时部分可能很大,因为   TIME类型不仅可以用来表示一天中的某个时间(哪个   必须小于24小时),但也要经过时间或时间间隔   在两个事件之间(可能远远超过24小时,甚至是   负)。

你可能最好只使用一个int字段(其中值存储为与起始时间的秒差)。通常的做法是创建一个字段,用于存储自纪元以来经过的秒数而不是日期时间字段。否则,您需要切换到datetime字段。

http://dev.mysql.com/doc/refman/5.7/en/time.html

答案 1 :(得分:0)

您正在使用 strtotime()

strtotime() - 将英文文本日期时间解析为Unix时间戳:

例如:

argc == n

在此尝试

int