2010-08-09 9 views
1

Salut les gars mon application analyse les fichiers texte où les valeurs de date sont stockées dans le format: DDMMMYYYY par exemple: 12MAR2009. J'ai remarqué que l'insertion de cette valeur telle qu'elle est dans une valeur de date/heure de la base de données ne fonctionne pas du tout. Comment puis-je convertir cela en une valeur datetime qui peut être entré dans une base de données. Mon application est en PHP.Comment puis-je convertir une date du format DDMMMYYYY en une date stockable db

+0

La plupart des SGBD ont des fonctions pour analyser les dates des chaînes. Avez-vous envisagé de laisser cette tâche à la base de données? –

Répondre

2
$timestamp = strtotime("12MAR2009"); 

... 

INSERT INTO my_table (..., timestamp) VALUES (..., FROM_UNIXTIME($timestamp)) 

La fonction PHP strtotime() prend presque toute chaîne contenant une valeur de date/heure, et le convertir en un horodatage unix.

La fonction MySQL FROM_UNIXTIME() prend un horodatage unix et le convertit au format date-heure de MySQL.

3

Quelque chose comme cela devrait convertir votre date en MySQL's DATETIME format:

$date = new DateTime('12MAR2009', new DateTimeZone('America/New_York')); 
$mysql_date = $date->format('Y-m-d H:i:s'); 

Vous pouvez utiliser strtotime(), mais la manipulation avec fuseau horaire, il est une sorte de douleur.

+0

+1 pour la mention des fuseaux horaires. Les dates/datetimes doivent toujours être sauvegardées avec les informations de fuseau horaire. D'autre part, les utilisateurs se déplaçant et se déplaçant sur les serveurs sont des sources potentielles d'erreurs. – chryss

+0

Actuellement, mon application tourne autour de l'heure UTC de base - votre point est valide si j'ai besoin de garder un journal des horaires spécifiques à chaque utilisateur en fonction de l'endroit où ils se trouvent. Je garderai cela à l'esprit dans un autre projet - merci encore. – Ali

Questions connexes