2009-09-30 9 views
2

Si j'ai une date telle que mm/jj/aaaa. Comment puis-je obtenir mysql pour stocker la date dans ce format. Est-ce possible ou faut-il le stocker sous la forme aaaa/mm/jj et le convertir plus tard? Ce que je veux faire est d'insérer une date au format mm/jj/aaaa mais la base de données ne le permettra pas. Il veut yyyy/mm/ddcomment stocker une date dans une base de données mysql?

Répondre

6

Quelle est votre raison pour cela? Je ne vois pas d'utilisation raisonnable pour cela.

Vous ne pouvez pas changer la façon dont MySQL stocke les dates, non. Mais vous pouvez bien sûr les formater en les lisant/en les écrivant. Vous pouvez le faire dans la requête SQL comme ceci:

Par exemple, vous pouvez utiliser la fonction STR_TO_DATE pour formater la date lors de l'insertion:

INSERT INTO mytable (mydate) VALUES (STR_TO_DATE('12/31/2009', '%m/%d/%Y')) 

Et vice versa:

SELECT DATE_FORMAT(mydate, '%m/%d/%Y') FROM mytable /* returns 12/31/2009 */ 

Mais comme FactalizeR a souligné, ce n'est pas une bonne pratique de le faire dans la requête et il devrait être déplacé vers le script, comme ceci (en considérant que vous utilisez PHP).

$date = '12/31/2009'; 
$date = date('Y-m-d', strtotime($date)); 
mysql_query("INSERT INTO mytable (mydate) VALUES ({$date})"); 

Et vice versa

$date = mysql_result(mysql_query("SELECT mydate FROM mytable"), 0, 0); 
$date = date('m/d/Y', strtotime($date)); //returns 12/31/2009 
+1

La mise en forme des données dans les requêtes SQL doit être considérée comme une mauvaise pratique et doit être déplacée dans le script. –

1

Il existe un type DATE intégré dans MySQL. Cela permet de stocker une date. Et plus tard dans votre langage de programmation, vous extrayez cette date et la convertissez au format que vous voulez. En outre, la conversion peut être effectuée directement dans MySQL via la fonction DATE_FORMAT (date, format).

+0

Salut, merci. Parlez-vous du type de données? Je suis conscient de cela, mais il prend le format yymmdd. Je veux stocker la date dans l'ordre inverse. –

+0

Puis-je également utiliser date_format pour les insertions? Si je peux, je suis doré. –

+0

Il existe une fonction DATE_FORMAT (date, format) pour formater la date comme vous le souhaitez –

-3

Je vous recommande d'utiliser varchar pour votre format, mais notez que le tri serait difficile car votre date ne commence pas par un an. optez pour le format de date mysql AAAA-MM-JJ une conversion en JJ/MM/AAAA dans votre script.

0

Les champs MySQL DATE doivent stocker la date au format AAAA-MM-JJ (y compris les tirets). Si vous essayez de le stocker d'une autre manière, vous aurez des problèmes avec les comparaisons de dates et la commande.

La conversion ultérieure est une tâche triviale. Y at-il une raison impérieuse pour laquelle vous essayez d'éviter cela? Quelle autre technologie utilisez-vous pour parler à la base de données MySQL? (c'est-à-dire PHP, C# etc ...)

1

Je pense que vous vous mélangez ce que vous stockez - la date elle-même - la façon dont cette date est ensuite appelée.

Pourquoi voulez-vous stocker dans un format particulier? Voulez-vous insérer dans ce format? Dans ce cas, vous pourrez peut-être vous en sortir, en fonction de la localisation de votre installation, mais sinon convertir - insert serait le moyen de le faire (en fonction, bien sûr, de la façon dont vous insérez).

Créez-vous une commande SQL à partir de chaînes?

Questions connexes