Problème sur un order by date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème sur un order by date

par saebakun » 03 nov. 2005, 17:05

Corrigé

Merci :)

et bien vu ;)

Re: resolu

par albat » 03 nov. 2005, 17:00

$sql="SELECY date, id from livraison where date like '%-%-2004' order by date;";
Cela dit, fais attention aux fautes de frappe,
tu risques de rencontrer un problème avec ton... SELECT ? ;)

par charabia » 03 nov. 2005, 16:56

Oui. En fait, je répondais à Charabia.
Le nom dates est licite.
Tout à fait d'accord ;) J'étais parti que la colonne qu'avait fait Saebakun :)

par saebakun » 03 nov. 2005, 16:46

oui on est d'accord :)

et bien merci pour les coups de mains :D

par albat » 03 nov. 2005, 16:42

Oui. En fait, je répondais à Charabia.
Le nom dates est licite.

par saebakun » 03 nov. 2005, 16:37

Attention j'ai une collonne "date" avec le mauvais format et une colonne "dates" en bon format :)

par albat » 03 nov. 2005, 16:32

Peut-être parce que date est un mot réservé
et que créer un champ portant ce nom est plutôt une mauvaise idée... ;)

Re: resolu

par charabia » 03 nov. 2005, 16:28

on met l'année que l'on veut modifier et hop c'est parti :D j'ai plus qu'à supprimer ma colonne "date" et c'est bon :)

Merci tout le monde.
:shock: Pourquoi supprimer la colonne que tu viens de créer...? J'ai pas tout saisis là...

resolu

par saebakun » 03 nov. 2005, 16:19

c'est bon j'ai resolu mon pb.

J'ai créé une nouvelle colonne "dates"

et j'ai fait ce code:

<?
$connect=pg_connect("user=user password=password dbname=dbname");
$sql="SELECT date, id from livraison where date like '%-%-2004' order by date;";
$resultat=pg_query($connect,$sql);

while($row = pg_fetch_array($resultat))

{
$date=$row["date"];
$id=$row["id"];

$jour=substr($date, 0, 2);
$mois=substr($date, 3, 2);
$annee=substr($date, 6, 4);

$dates="$annee-$mois-$jour";

$update=pg_query($connect, "UPDATE livraison SET dates = '$dates' where id = '$id';");

}

?>
on met l'année que l'on veut modifier et hop c'est parti :D j'ai plus qu'à supprimer ma colonne "date" et c'est bon :)

Merci tout le monde.

par pitt » 02 nov. 2005, 16:09

C'est normal si tu as des données de type varchar dans ta colonne il ne peut pas modifier le type du champ soit tu vides ta table, tu changes et tu reimplémente soit si tu as beaucoup de données tu recrées une colonne date correcte tu écris un script qui vas récupérer tes dates de type varchar et un id et tu remplis avec une petite fonction ta nouvelle colonne et ensuite tu peux supprimer la colonne date en varchar

par charabia » 02 nov. 2005, 16:05

Je n'arrive pas à changer le type de ma collonne il me dit

column date cannot be cast to type date
A faire en dernier recours si le changement est impossible :
- exportes ta table (avec "aucune" comme compression)
- copies le "sql" de création de ta table et les données (à savoir le CREATE TABLE et tous les INSERT INTO)
- remplaces la ligne de ta date par : `date` date NOT NULL default '0000-00-00',
- supprimes ta table
- va dans SQL, colles le tout et exécutes.

Là tu devrais avoir ta nouvelle table correct. N'oublies pas de changer ensuite la date dans ta base : aaaa-mm-jj

par saebakun » 02 nov. 2005, 15:59

Je n'arrive pas à changer le type de ma collonne il me dit

column date cannot be cast to type date

par charabia » 02 nov. 2005, 15:43

C'est tout à fait normal que tes dates soient mal triées. Il faut utiliser le type DATE et non pas VARCHAR si tu veux faire un tri correct.

Tu utilises ensuite une fonction simple qui t'affiche d'abord le jour au lieu de l'année.

Exemple ici

par DarkBlue » 02 nov. 2005, 15:43

Moi je pense que le plus simple c est de modifier ta base et ton script ( t en as pas pour longtemps t as juste a inverser 'd' et 'm' dans ton script et remplacer Varchr par date dans la base )

Ce qui va te prendre 5 minutes et t eviter bien des galeres !

Problème sur un order by date

par saebakun » 02 nov. 2005, 15:38

Bonjour,

j'ai un leger problème sur mes dates dans une table...

J'ai un champ varchar avec jour-mois-annee (01-12-2004)

je fais un

select * from table order by date;

mais mon problème et qu'il classe d'abord les jours (normal) donc j'ai toutes les lignes qui correspondent au premier de chaque moi puis les seconds de chaque mois au lieu de chaque moi en priorité. Ce qui est normal vu que j'ai mis les dates à la fr... (ce que je regrette vraiment là)

Donc si quelqu'un a une idée pour que je puisse avoir le résultat normal :/ pour m'eviter de devoir modifier tout mes codes et ma db en mettant mois-jours-année.

Merci