Bonjour,
je réalise une application en PHP et je me retrouve confronté à un petit problème.
Je fais un SELECT qui me ramène une date (au format DATE Oracle), puis je souhaite l'introduire dans une autre table, toujours au format DATE.
La date en question est 01/01/2099, mais lorsque je l'introduis dans l'autre table, elle se transforme en 01/01/1999 ...
Voici mes requêtes (simplifiées) avec PDO :
Je l'insère ensuite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $req = $bdd->query("SELECT datefin AS datefin FROM table1 ..."); $donnees = $req->fetch(); // $donnees['DATEFIN'] contient donc ma date
Ensuite lorsque je fais un SELECT sur cette date pour l'afficher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $req = $bdd->prepare("INSERT INTO table2 (datefin) VALUES(?)"); $req->execute(array($donnees['DATEFIN']));
Au lieu de m'afficher 01/01/2099, ça m'affiche 01/01/1999.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part SELECT TO_CHAR(datefin, 'DD/MM/YYYY') AS datefin FROM table2
Sachant que sous SQL Developer, la date est affichée comme ceci dans la colonne 01/01/99 (c'est bien un format DATE).
Peut-être que PHP reçoit seulement "01/01/99" sous format de chaine de caractères, et que lors de l'insertion ça transforme le /99 en /1999 au lieu de /2099 ?
J'en ai eu l'idée oui, mais lorsque je fais un "bidouillage" pour récupérer la date au format chaine de caractère.
Et que je l'insère :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $req = $bdd->query("SELECT TO_CHAR(datefin, 'DD/MM/YYYY') AS datefin FROM table1 ..."); $donnees = $req->fetch(); // $donnees['DATEFIN'] contient donc ma date au format '01/01/2099'
Maintenant lorsque je fais un SELECT ça m'affiche 01/01/0099 ... J'y comprends rien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $req = $bdd->prepare("INSERT INTO table2 (datefin) VALUES(TO_DATE(?, 'DD/MM/YYYY'))"); $req->execute(array($donnees['DATEFIN']));
Quelqu'un a déjà eu ce soucis, ou saurait d'où ça peut provenir ?
Merci d'avance !
Partager