2013-04-10 4 views
0

Дата и время с URL-адреса должны быть в формате YYYY-MM-DD-HH-II-SS. Я хочу проверить его правильность и вставить в базу данных в столбце формата timestamp mysql.php check datetime from url

1) С $timestamp = $this->input->get('time_from') Получаю его с url.

2) Перед вставкой в ​​базу данных я пытаюсь ее распечатать.

if (! empty($timestamp)) { 
     $timestamp = date_create_from_format('Y-m-d-H-i-s', $timestamp); 
     if (! $timestamp) 
      echo date_format($timestamp, 'Y-m-d H:i:s'); 
    } 

3) Я получаю, что этот год может быть до 1970 года, например, 1950-01-01-10-32-01 является правильной этой проверкой. Но такую ​​дату в столбце mysql невозможно вставить. 4) Я получаю, что 2012-02-31-10-00-00 автоматически преобразуется в 2012-03-02 10:00:00.

Вопросы: как избежать этих запутанных автоматических преобразований? Каков наилучший способ обеспечить такую ​​проверку?

ответ

1

Вы не можете сохранить дату до 1970 года в столбце MySQL TIMESTAMP. Вместо этого используйте DATETIME. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html

Вы можете использовать функцию checkdate(), чтобы узнать, действительно ли дата.

+0

Мне не нужны даты до 1970 года. Я продолжаю использовать TIMESTAMP. Функция checkdate также не дает возможности проверить, удовлетворяет ли она требованиям timestamp mysql. – Anton

+0

Если вы посмотрите на документацию MySQL, на которую я предоставил вам ссылку, вы можете увидеть диапазон дат, который позволяет тип Timestamp и проверять их. Вы можете использовать checkmate, чтобы узнать, действительна ли дата - если это не так, она будет «преобразована», как вы описали в своем # 4. –