C'est donc dans ce livre-là que j'ai appris que actAs était un comportement.
Je me suis interrogé sur le pourquoi du comment actAs: { Timestampable: ~ } créait deux champs supplémentaires qui sont created_at et updated_at, et surtout comment ces informations étaient automatiquement mises à jours lors de requêtes d'insertions ou de mises à jour.

En réalité en indiquant Timestampable, vous appellerez le template Doctrine_Template_Timestampable qui se situe dans le dossier :

./lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Timestampable.php


Alors concrètement Timestampable est un template. On peut donc partir dans la logique que l'on peut créer nos propres templates et ce qui est ..... totalement VRAI !

Alors que fait exactement ce template ?
Si vous avez uniquement le signe ~ alors il vous créera les champs created_at et updated_at.
Cependant vous avez aussi la possibilité de désactiver la création d'un des deux champs voir même des deux mais dans le dernier cas, il n'y a aucun intérêt de déclarer Timestampable.
Pour vous, je vais vous indiquer comment éviter de créer le champ created_at et ensuite updated_at :

Désactiver le champ created :

actAs:
  Timestampable:
    created:
      disabled: true


Désactiver le champ updated :

actAs:
  Timestampable:
    updated:
      disabled: true


L'autre contrainte est que par défaut, le nom du champ est created_at et la date et de type DateTime.
Vous souhaitez peut-être avoir uniquement une date de type Date. Pour faire ceci, vous devez procéder ainsi :

actAs:
  Timestampable:
    created:
      name: created_date
      format: Y-m-d


Ce que j'aime c'est que dans le moindre détail on peut aller assez loin et on ne reste pas esclave par des options limitées.
Cet article est déjà une bonne introduction à Timestampable. Si vous souhaitez en savoir plus, vous avez l'option de vous rendre sur la documentation de Doctrine.