I don’t know which is the best way to store a timestamp in the database. I want to store the entire date with hours minutes and seconds but it only stores the date ( for instance 2012-07-14 ) and i want to store 2012-07-14 HH:MM:SS. I am using the dateTime object. Here is the code:
In the controller:
$user->setCreated(new \DateTime());
In the entity:
/**
* @var date $created
*
* @ORM\Column(name="created", type="date")
*/
private $created;
Is it better to store the date and the the time separately in the database ? or better to store all together like YYYY-MM-DD HH:MM:SS ? I will have then to compare dates and calculate the remaining times, so that is important in order to simplify the operations later. So what do you think ? can somebody help me?
The best way to store a timestamp in the database is obviously to use the timestamp column if your database supports that type. And since you can set that column to autoupdate on create, you dont even have to provide a setter for it.
There is a Timestampable behavior extension for Doctrine 2 which does exactly that from the userland side as well:
With this behavior, all you need to do is change your annotation to
Then you dont need to call
setCreatedin your code. The field will be set automatically when the Entity is created for the first time.