[mysql] - Reformater une date - SUBSTR ne fonctionne pas Oo

Salut à tous :wink:

Dans ma BDD la date est sauvée suivant le format YYYY-MM-DD (oui je sais fallait pas faire ainsi, mais bon).

Je voudrais obtenir à l’affichage YYYY-MM ou mieux encore : MM-YYYY

Histoire de faire ca facilement, j’ai tenté un SUBSTR pour faire ca simplement :

SQL
[color=blue;font-weight:bold]SELECT[/color] SUBSTR('dateLot','-',2) FROM `table`

Normalement ca doit substrer tout ce qui traine après le second -, lui compris.

J’ai aussi essayé avec la forme plus classique de substr, c’est à dire prendre uniquement les 7 premiers caractères, mais là encore j’ai une erreur SQL :confused:

J’ai aussi essayé EXTRACT(DATE_MONTH) mais ca ne semble pas fonctionner :frowning:

Il doit y avoir qqch qui m’échappe, mais je ne trouve pas quoi, j’ai pourtant recopié ce qu’on trouve dans le manuel de mysql…

QQN peut m’aider svp ?

Merci bien par avance !

Essai
SELECT EXTRACT (YEAR_MONTH FROM ta_date) FROM ta_table

pour voir

Erreur de frappe en tapant mon post, j’avais bien fait YEAR_MONTH pourtant :stuck_out_tongue:

Ca fonctionne là, presque : 200606 c’est pas totalement ce que je voudrais, c’est 2006-06 qui m’intéresse.

J’encadre le tout avec un format date ?

ayay !

FORMAT_DATE(`lots`.`dateLot`, ‘%m-%Y’)

Mais je capte toujours pas pourquoi cette saloperie de SUBSTR ne fonctionne pas :frowning:

Les données sont traitées avec quoi ? (php, asp…)

$sql="SELECT id, DATE_FORMAT(date, '%d/%m/%Y') as datefr, titre, texte, auteur FROM news ORDER BY id DESC";
$req=mysql_query($sql) or die('Erreur SQL :<br />'.$sql.'<br />'.mysql_error());
$data=mysql_fetch_assoc(req);

Moi je le passe dans la requête comme ceci.

Attention après l’index pour relever la date est ‘datefr’, tel que :

echo $data['datefr'];

PHP, mais retoucher ma date par PHP je saurais faire, je voudrais seulement y arriver directement depuis mysql :slight_smile: Autant en mettre un max dès la source :smiley:

Par contre le substr, j’arrive toujours pas, mais bon comme toujours c’est probablement une faute de syntaxe à la noix…

Pardon je m’égare :s ! J’avais lu vite fait le titre, je recommencerai plus promi :wink: !

Parcontre là je comprends pas trop, tu veux donc reformater ta date directement sur ta table c’est ça? Il faut donc modifier le type de ton champ non? Parce que par défaut si le type est “date” le format est YYYY-MM-DD, et je suis pas sur qu’on puisse le modifier (j’ai jamais essayé :s !). Je m’égare peut-être encore, dans ce cas là désolé, mais je comprends pas trop le pourquoi de la chose… :s !

La doc ne fait pas de mal…

Quoique…

SQL
[color=blue;font-weight:bold]SELECT[/color] SUBSTR(`dateLot`, 1, 7) FROM `table`

Tentes ça :jap:

Sinon pour tes tests de requète, utilises de préférence MySQL en ligne de commande…
http://img287.imageshack.us/img287/7576/titerequete3rg.png

sandrock > j’ai lu la doc, ainsi que précisé plus haut :slight_smile: j’ai fait exactement ce que t’as écrit, sauf que non ca marche pas… Je retenterais demain une fois au taf, et je ferais des screens si ca marche toujours pas (auquel car j’étais sous l’effet de produits étranges aujourd’hui)…

DArkcham > je veux pas changer ma table, je veux simplement faire les traitements que je peux directement depuis mysql. Il a les fonctions dédiées, autant le faire bosser lui et pas php ^^

J’ai compris :smiley: !!! Mais je peux pas t’aider désolé :frowning: ! Moi j’exploite pas beaucoup sql, ce qui compte pour moi c’est le résultat donc je vais au plsu simple ^^ ! Mais je vais quand même regarder sur mes sites :wink: !

Et justement, … même si j’ai du le dire avant, je me dois de casser ce que j’ai dis : le langage SQL n’est pas fait pour faire du formattage de données.

D’accord avec toi Sans-Nom, :nah: :stuck_out_tongue: !