2010-05-13 2 views
1

J'utilise Codeigniter pour un petit projet, et mon modèle fonctionne correctement, sauf pour les dates. J'ai une colonne définie:paramétrer codeigniter mysql datetime column à time() le définit toujours à 0

datetime created_at not

et mon code de modèle inclut dans son tableau passé en db-> Insert:

'created_at' => time()

Cette produit une valeur datetime de 0000-00-00 00:00:00.

Quand je change à:

'created_at' => "FROM_UNIXTIME (".. Le temps() ")"

il produit encore la valeur 0 datetime.

Qu'est-ce que je fais mal? Comment puis-je définir ce champ à l'heure unix donnée? De plus, je sais que MySQL définit automatiquement les colonnes TIMESTAMP pour vous - cette solution ne m'intéresse pas ici.

Jusqu'à présent, je ne peux pas trouver un exemple complet de ceci sur le web.

Répondre

2

datetime nécessite une chaîne de type AAAA-MM-JJ, où-comme time() produit un horodatage UNIX qui est un nombre entier de secondes depuis le 1er janvier 1970. Les deux dates sont entièrement différentes.

Si vous souhaitez utiliser PHP pour remplir votre champ datetime MySQL vous devez utiliser:

date('Y-m-d h:i:s'); 

Ou quelque chose dans ce sens de toute façon.

+0

Merci. À partir des exemples de codeigniter, il semblait que la classe d'enregistrement actif faisait une sorte de magie pour convertir l'horodatage unix en date, et je pensais que je n'avais pas la bonne convention de dénomination de colonne ou quelque chose. Maintenant, je vois qu'il n'y a pas de magie, leur exemple suppose simplement un champ de date entier. – Jake

+0

En fait, aucune idée pourquoi l'approche from_unixtime ne fonctionnait pas alors? – Jake

+0

@Jake. L'enregistrement actif échapperait à ce que vous avez mis dans created_at –

0

now(), car now() renvoie l'heure actuelle sous la forme d'un horodatage Unix, référencé par rapport à l'heure locale ou à l'heure GMT de votre serveur, en fonction du paramètre "référence temporelle" dans votre fichier de configuration. Si vous n'avez pas l'intention de définir votre référence de temps maître à GMT (ce que vous ferez généralement si vous exécutez un site qui permet à chaque utilisateur de définir ses propres paramètres de fuseau horaire), cette fonctionnalité ne sera pas utile pour la fonction time() de PHP.