Теперь как памятку для себя и других напишу 
TIMESTAMP удобен тем, что при операциях INSERT или UPDATE
первое поле этого типа может автоматически обновляется до текущего значения.
Т.е. если в структуре таблицы:
Код:
`created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`updated` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
- поле `created` при создании записи в таблице автоматически вставит текущую дату
- поле `updated` нужно будет обновлять самому
Такое не прокатит:
Код:
`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
т.к. автоматом обновляется только первое поле
Если в структуре таблицы:
Код:
`date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
- в поле `date` при создании записи в таблице автоматически подставится текущая дата, и автоматически будет обновляться при изменениях записи (дату создания затрет)
Если мы будем извлекать дату из бд:
Код:
SELECT `date` FROM `table_name`;
то получим ее в формате: 'YYYY-MM-DD HH:MM:SS'
Чтобы ее вывести в формате нужнном нам, делаем например так:
Код:
$date = new DateTime($date_string);
echo $date->format('d m Y');
где $date_string - строка вида 'YYYY-MM-DD HH:MM:SS'. Выведет вроде этого:
> 09 10 2012
В PHP также удобно работать с UNIX_TIMESTAMP и чтобы извлечь дату в виде секунд нужно сделать так:
Код:
SELECT UNIX_TIMESTAMP(`date`) AS `date` FROM `table_name`;
Код:
echo date('d m Y', $date);
где $date - метка времени (секунды тпа 20121349725879 или time() - текущее время в секундах) Выведет вроде этого:
> 09 10 2012
Теперь, что касается KohanaТ.е. если в структуре таблицы:
Код:
`created` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
`updated` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
то написав в модели ORM так:
Код:
protected $_created_column = array(
'column' => 'created',
'format' => 'Y-m-d H:i:s',
);
protected $_updated_column = array(
'column' => 'updated',
'format' => 'Y-m-d H:i:s'
);
мы обеспечим автоматическое сохранение времени создания и обновления записи средствами Kohana
Если в структуре таблицы:
Код:
`created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`updated` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
достаточно будет
Код:
protected $_updated_column = array(
'column' => 'updated',
'format' => 'Y-m-d H:i:s'
);
Автоматическое сохранение даты создания записи обеспечит mysql
Получим из БД мы тоже их в формате 'YYYY-MM-DD HH:MM:SS' и приведем их к нужному виду с помощью класса DateTime(), например так:
Код:
$obj = ORM::factory('model', $id);
$date = new DateTime($obj->created);
echo $date->format('d m Y');
$obj = ORM::factory('model', $id);
$date = new DateTime($obj->updated);
echo $date->format('d m Y');
Еще мы можем хранить дату в секундах в поле типа int
Код:
`created` INT(11) UNSIGNED DEFAULT NULL,
`updated` INT(11) UNSIGNED DEFAULT NULL,
Код:
protected $_created_column = array(
'column' => 'created',
'format' => true,
);
protected $_updated_column = array(
'column' => 'updated',
'format' => true,
);
Тогда дата будет сохранятся в виде целого числа в секундах.
Получим из БД мы тоже их в виде секунд и приведем их к нужному виду с помощбю функции PHP date(), например так:
Код:
$obj = ORM::factory('model', $id);
echo date('d m Y', $obj->created);
echo date('d m Y', $obj->updated);
Блин, тут целая статья получается, ну его нафиг все...))