Mysql - conversion integer en date

Résolu/Fermé
ykolb - 19 sept. 2005 à 10:43
 x01 - 6 oct. 2010 à 17:04
bonjour,

j'ai un petit dépannage a effectuer sur une appli en base mysql.
Je dois rechercher les enregistrements effectués pour une date précise dans une table.
J'ai une colonne date mais au format int(10) unsigned.

J'ai essaye ( mal ?) les commandes convert et cast mais au select j'ai toujours une reponse en integer.

Quelle est la syntaxe exacte à suivre pour selectionner et afficher les resultats au format date.


Merci.

7 réponses

ykolb Messages postés 38 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 12 juillet 2010 19
20 sept. 2005 à 11:57
OK j'ai trouve. Il faut utiliser la fonction from_unixtime(date) pour la conversion.

select from_unixtime(debut) from t_Heures;

On peut aussi spécifier le format
select from_unixtime(debut,'%Y %M %D') from t_Heures;
14
Ou un format plus standard, a utiliser pour un Update sur un champ datetime par exemple:

select from_unixtime(debut,'%Y-%m-%d') from t_Heures;
0
ykolb Messages postés 38 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 12 juillet 2010 19
19 sept. 2005 à 17:31
Oula !!mais tu me parles php !!
Moi je te parles MySql. Je ne veux pas passer par des pages php. Mais simplement trouver des enregistrements en sql pur pour pouvoir ensuite deleter les lignes qui ont été saisies ce jour.

Je n'ai pour ma part jamais developper en php, non pas que ce ne soit pas interressant, mais je n'ai pas trop le temps. La j'essai juste de debloquer une appli développer par un tiers.
Merci quand meme.

Sinon j'ai cherché dans les docs mais a part la fonction 'convert' citée précedemment , et qui ne fonctionne pas comme je l'utilise, je n'ai rien trouvé.


Une autre idee , peut etre ??
5
...

desolé alors je ne vai pas pouvoir t aidé... car je ne me sert de mysql que a travers php...

bon courage et bonne chance

trysac
0
ykolb Messages postés 38 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 12 juillet 2010 19
20 sept. 2005 à 08:52
bon, quelqu'un s'y connait il en sql pur ?
quelle est la commande/syntaxe qui me permet de convertir dans une requete un champ integer en date ?

select convert(monchamp, date) from matable;

mais mon exemple ne marche pas ?

MErci
0
bonjour

si j ai bien compri tu a dans ta table mysql le champ ddate sous la forme de time()

pour trouvre le timestamp a partire d'une date la commende est:

$timestamp = mktime(heure, minutes, secondes, mois, jour, an);

ex:
le timestamp du 5 Février 1998 à 13h 45min 26s est:
$vieux_timestamp = mktime(13, 45, 26, 2, 5, 1998);

j esper que je t ai aidé

trysac
0
ykolb Messages postés 38 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 12 juillet 2010 19
19 sept. 2005 à 13:38
Je me suis peut etre mal exprime.

Ci joint un desc de ma table sous MySql;

desc t_Heures;
+-------------+------------------+------+-----+-----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+-----------+----------------+
| matricule | varchar(10) | | MUL | | |
| debut | int(10) unsigned | | | 0 | |
| fin | int(10) unsigned | | | 0 | |

Debut et fin correspondent à des dates et heures de travail.

Je souhaite effectuer une requete pour savoir qui à travaillé tel jour.

Si je fais une requete select
select debut from t_Heures;
j'obtiens cela.
| 1126360800 |
| 1126346400 |
| 1126360800 |
| 1126702800 |
| 1126346400 |

Et je voudrais que cela m'affiche plutot quelque chose comme cela parce que je ne sais pas à quoi correspond la valeur 1126346400 !!
16/09/2005 09:00
16/09/2005 12:15
etc....

j'ai essaye la commande suivante
select CONVERT(debut,DATE) from t_Heures;
mais j'obtiens le meme résultat !!!


Merci
0
bien joué !!!

heuresement que tu as trouvé toi meme ;) oh les boulets !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
re bonjour

oui j avais mal compri

pour cela tu fais l opperation inverce:

ex: tu veu savoir a quel jour correspond 1080513608:
<?

$timestamp = 1080513608;

echo date('d/m/Y', $timestamp); // te donnera la date correspondante soit le29/03/2004


?>

c bon??? ou j suis trop broullion?
-1
et

<? echo date('H\h i\m\i\n s\s', $timestamp); ?> pour avoir heur minute seconnde de la forme XX H YYm ZZ s

dsl pour l oubli ;-)
-1
ykolb Messages postés 38 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 12 juillet 2010 19
19 sept. 2005 à 16:18
hum, du dur mais je ne suis peut etre pas tres doué.

1) admetons , mais comment le rentrer dans ma requete sql ? Je veux ressortir toutes les personnes ayant travaille un jour donné.

2) j'ai essayé avec la syntaxe que tu m'indiques !! ??
voila le resultat
mysql> $timestamp=1127050200;
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '$timestamp=1127050200' at line 1
mysql> timestamp=1127050200;
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'timestamp=1127050200' at line 1
mysql> echo date('d/m/Y', 1127050200)


T'es sur que ca marche dans mysql ?


merci
0
trysac > ykolb Messages postés 38 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 12 juillet 2010
19 sept. 2005 à 17:06
le dut est que tu trouve par toi meme et non que je te donne la reponse :

tes date sont sous la forme timstamps dans ta base de donnees

tu veux que en donnant une date sous la forme date( ) my_sql tu dise toute les personnes qui on travaillé ce jour la:

page1.php

tu rentre ta date au format date( ) dans un formulaire qui renvoi a page reponse

<FORM name='date' action='reponse2.php' method='POST'>
heur:<input type="text" name="heur" />
minute ....
seconnde (tu peu metre O pour allé plus vite)

mois...
jour...
an...
</form>


page reponse.php

$heur= AddSlashes (htmlspecialchars($_POST['heur']));
$min = ....
etc...


tu doi retransformé ta date date( ) en timestamps:

$timestamp = mktime(heure, minutes, secondes, mois, jour, an);

$reponse=mysql_query("SELECT * FROM ta table WHERE ton champ=$timestamp ");

while($donnees=mysql_fetch_array($reponse))
{

$date1=$donnees['ton champ'];

}

tu retransforme $timestamps en date( ) grase a :
date('d/m/Y', $timestamp);

voila
0
Merci pour cette réponse, je me demandais comment le faire en sql, je sais le faire en php aussi maintenant :-)

Cordialement.
-1