2016-11-10 3 views
-1

Я хотел бы спросить.Значение времени MySQL в запросе 838: 59: 59?

Я пытаюсь добавить значение времени в базу данных MySQL .Но добавленным в базу данных значения является 838: 59: 59

И хранить только в колонке timein, как 838: 59: 59. Конечный результат столбца: 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> 

Спасибо.

+0

Каковы типы столбцов – e4c5

+0

Время для столбца TIME. – Jamilah

ответ

2

Ответ просто, это максимум, который может удерживать это поле.

MySQL извлекает и отображает значения TIME в формате HH: SS: ММ 'Формат (или 'HHH: MM: SS' формат для больших значений часов). Значения TIME могут находиться в диапазоне от '-838: 59: 59' до '838: 59: 59'. Часовая часть может быть настолько большой, что тип TIME может использоваться не только для представления времени суток (которое должно быть менее 24 часов), но также истекшее время или временной интервал между двумя событиями (которые могут быть намного больше, чем 24 часа, или даже отрицательный).

Возможно, вам было бы лучше использовать только поле int (где значение хранится как секундная разница от времени начала). Обычная практика - иметь поле, в котором хранятся секунды, прошедшие с эпохи, а не в поле datetime. Еще вам нужно переключиться на поле datetime.

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

+0

Я изменил его на тип даты, но хранилище значений 0000-00-00 00:00:00 для обоих тайм-аутов столбца и timein – Jamilah

+1

, пожалуйста, обновите свой вопрос своей новой таблицей. Также добавьте образец сгенерированного sql (например: используйте эхо для распечатки sql). – e4c5

+0

i эхо результат, а значение равно «1». i меняет тип INT, а значение хранится 1478782800 для тайм-аута и 1478794140 для timein .. тогда я меняю его на тип VARCHAR, значение для тайм-аута 1478794140 и timein равно 1478797560 – Jamilah

0

Вы используете StrToTime()

StrToTime() - Разобрать Английский текстуальные DateTimes в Unix временные метки:

Например:

echo(strtotime("3 October 2005")); 
output as 1128312000 

ЗДЕСЬ TRY ЭТО

$epoch_time_out_user =strtotime($_POST['timeout'])- (300*60); 

$dt = new DateTime("@$epoch_time_out_user"); 
$time_out_user = $dt->format('H:i:s'); 

//now $time_out_user has time 
// now you can use **$time_out_user** in insert query 
// do same for **$time_in_user** 

//FYI : The value (300*60) is depends timezone 
Смежные вопросы