2012-02-24 4 views
3

J'ai un champ de date (minuscule) contenant des informations de date au format "jj-mm-aa", par exemple 07-01-90. En utilisant une requête mysql, je veux la changer au format de date aaaa-mm-jj. J'ai essayé le code ci-dessous mais rien ne se passe.mysql changer la date format

mysql_query("UPDATE Table SET date=STR_TO_DATE('date','%Y,%m,%d')"); 
+1

essai avec (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html [ '' DATE_FORMAT()] # function_date-format) – diEcho

Répondre

6

Vous utilisez la fonction correcte STR_TO_DATE(str,format) pour atteindre l'objectif, mais vous êtes ma roi deux erreurs:

  1. Dans votre requête le format l'argument ne correspond pas au format d'expression de chaîne. Vous avez dit qu'il est au format dd-mm-yy alors que vous avez passé %Y,%m,%d (séparés par des virgules) à l'argument format. La requête retournera une erreur "valeur datetime incorrecte". Vous devez utiliser %d-%m-%Y.
  2. Vous ne pouvez pas modifier le type de données d'une colonne à la volée en définissant un type différent de la valeur transmise. Vous devez d'abord mettre à jour les valeurs, puis modifier le type de données pour la colonne.

Ainsi, résumant:

mysql_query("UPDATE `Table` SET `date` = STR_TO_DATE(`date`, '%d-%m-%Y')"); 
mysql_query("ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"); 

En outre, envisager de passer à l'extension PDO recommandée à la place de l'ancien et slowly deprecatedmysql l'extension.

0

Si vous utilisez my_sql avec php, vous pouvez utiliser date fonction

1
  1. Pour afficher chiffres année

    mysql_query("UPDATE Table SET date=DATE_FORMAT(date,'%y-%m-%d')");

  2. Pour afficher chiffres année

    mysql_query("UPDATE Table SET date=DATE_FORMAT(date,'%Y-%m-%d')");

+0

Cette requête ne convertit pas le format ... c'est probablement parce que le champ est "tinytext", pas DATE ou TIMESTAMP. – mustafa

+0

vous vouliez dire variable 'date' est de type varchar ?? –

+0

c'est un type tinytext. – mustafa

1

Essayez avec DATE_FORMAT() fonction.

mysql_query("UPDATE Table SET date=DATE_FORMAT(date,'%Y,%m,%d')"); 
1

Je dirais que vous devez faire ceci:

UPDATE table_name SET date = DATE_FORMAT('date', %Y-%m-%d); 
5

erreur dans votre requête

est STR_TO_DATE (date , '% Y-% m-% d')

mysql_query("UPDATE Table SET date=STR_TO_DATE(date,'%Y-%m-%d')"); 
2

Essayez ceci:

INSERT INTO table(date_field) VALUES(STR_TO_DATE('December 8, 2010','%M %d,%Y'));