2010-09-09 7 views
1

Ceci concerne Symfony 1.4, et probablement toutes les versions antérieures, exécutant PHP 5.3, mysql 5.1.Symfony/Propel - Récupérer les anciennes dates d'une base de données

Si je stocke des dates anciennes dans une base de données < 1970 ... et que je les récupère ensuite, elles sont automatiquement converties en une date incorrecte.

table Exemple:

id, some_date 
1, 1961-09-09 

Un exemple rapide.

$record = MyTablePeer::retrieveByPK(1); 
echo $record->getSomeDate(); 
//returns: 09/09/61 
//Want it to return: 1961-09-09 

D'où le format de sortie est-il contrôlé? J'ai besoin d'obtenir la date entière avec l'année entière stockée dans la base de données.

Répondre

4

Les accesseurs de champ de date ont un paramètre $format, utilisez cela, comme $record->getSomeDate("Y-m-d");.

En outre, c'est ce que le docblock dit à propos de la date accesseurs:

Ce accesseur seulement ne fonctionnent qu'avec les dates d'époque unix . Envisager la construction avec propel.useDateTimeClass ou modifier ce type de colonne à la (dépréciée) type de colonne « avant-unix » (par exemple BU_TIMESTAMP ou BU_DATE) si vous avez besoin pour soutenir pré/post-date Epoch.

@param  string $format The date/time format string (either date()-style or strftime()-style). 
      If format is NULL, then the integer unix timestamp will be returned. 
@return  mixed Formatted date/time value as string or (integer) unix timestamp (if format is NULL). 

@throws  PropelException - if unable to convert the date/time to timestamp. 
Questions connexes