Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Thu 17 March 2022 14:08

Kiecane
Participant actif
Date d'inscription: 31 Oct 2021
Messages: 91

changement format date

Bonjour,



J'ai une table qui contient un champ date_a au format varchar de la forme JJ/MM/AAAA et j'aurais aimé, soit convertir directement ce champ au format date (JJ-MM-AAAA), soit en créer un nouveau avec ce format-là. Le problème, c’est que j’ai trouvé différentes solutions sur internet mais aucune ne fonctionne (à chaque fois, ma requête SQL me retourne une erreur sans que je sache déterminer à quoi cette dernière est liée exactement).




> Voici les codes que j’ai testé (en supposant que ma table s’appelle ma_table) :

ALTER TABLE ma_table add column(new_champ date);
update bdd_total_obs set new_champ = str_to_date(date_a, '%d/%m/%Y');
Alter table bdd_total_obs drop column date_a;
alter table bdd_total_obs CHANGE date_a date;

Logiquement, si j’ai bien compris, ce script est censé créer un nouveau champ appelé new_champ dans ma_table, tout en supprimant le champ "date_a" qui contenait la date au format JJ/MM/AAAA. Quand j'exécute cette requête, on me renvoie qu'il y a une erreur à côté d'un "alter" mais je ne vois pas pourquoi.


J’ai aussi testé :
SELECT CONVERT (date, date_a, 103)
FROM ma_table

Dans ce cas-là, on me renvoie une erreur comme quoi il n'y a pas de colonne "date" dans ma_table (no such column : date) alors que logiquement date correspond au nouveau format voulu et non pas à une colonne.




Comme aucun de ces codes ne fonctionne pour moi, pourriez-vous m’indiquer pourquoi et/ou s’il existe une autre solution pour changer le format de mon champ date_a ?


Merci d’avance !

Hors ligne

 

#2 Tue 22 March 2022 11:58

Kiecane
Participant actif
Date d'inscription: 31 Oct 2021
Messages: 91

Re: changement format date

Re-bonjour,


Je me suis basée sur une autre solution que j'ai trouvé sur ce forum. J'ai commencé par séparer le jour, le mois et l'année dans mon format initial de date qui était jj/mm/aaaa avec la fonction suivante :

Select
date_a,
substr(date_a, 1, 2) as jour,
substr(date_a, 4, 2) as mois,
substr(date_a, 7, 4) as annee
from ma_table_ini

J'ai donc obtenu trois champs différents : "jour" qui contient le jour au format jj, "mois" qui contient le mois au format mm et "annee" qui contient l'année au format aaaa. J'ai ainsi créé une nouvelle table avec ces informations : ma_table_2


Ensuite, j'ai concaténé ces données avec la fonction suivante :
Select *, concat(annee,'-', mois, '-', jour) as date_concat
from ma_table_2

J'ai donc obtenu une nouvelle table (ma_table_3) avec un champ varchar dans lequel la date est au format aaaa-mm-jj
(comme le format de date que je souhaite finalement obtenir).



Mais là je suis à nouveau bloquée, j'ai donc bien un format de type aaaa-mm-jj comme ce que je voudrais obtenir à la fin, sauf qu'il faut que j'ai un format date et non varchar comme c'est toujours le cas. J'ai donc essayé plusieurs fonctions dont la suivante qui me semblait la plus appropriée (mais qui n'a pas fonctionné) :
SELECT *, CONVERT(date_conca, GETDATE(), 23) AS date_format
from test_modif_date_concat


Quelqu'un saurait-il comment procéder s'il-vous-plaît ?

Hors ligne

 

#3 Tue 22 March 2022 12:14

Franck2908
Participant actif
Date d'inscription: 5 Mar 2010
Messages: 84

Re: changement format date

Bonjour,

il faut déjà créer un nouveau champ date_2 (de type date) dans la table pour recevoir la valeur au bon format.
ensuite

Code:

update bdd_total_obs set date_2 = to_date(date_a,'DD/MM/YYYY');

Hors ligne

 

Pied de page des forums

Powered by FluxBB