IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

timestamp dans requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    oim
    oim est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 118
    Par défaut timestamp dans requête
    bonsoir, dans une requête je dois faire une selection entre 2 dates qui sont au format timestamp mais les dates qui doivent être triés dans la table sont au format 01/01/1900, est-il possible de mettre ce champ directement dans la requête au format timestamp ?

    $un et $deux sont les dates au format Timestamp
    T1 sont les dates en 01/01/1900

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = requete_sql("select T1 from ".$NPDS_Prefix."users_extend where T1 between $un and $deux");
    Merci !

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Par défaut
    le mieux c'est que dans ta base tu enregistre tes dates au format timestamp, c'est plus facile apres pour faire des requetes.

    Sinon pour ton probleme, tu peux utiliser unix_timestamp :
    SELECT UNIX_TIMESTAMP('2007-10-14 15:00:00');

    cela va te convertir ta date en timestamp

    $result = requete_sql("select T1 from ".$NPDS_Prefix."users_extend where unix_timestamp(T1) between $un and $deux");

    je pense que ca devrait marcher

  3. #3
    oim
    oim est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 118
    Par défaut
    Slt, en fait c'est ce que j'ai fait ca ma fait pas de boulot mais au moins maintenant c'est beaucoup plus facile, par contre j'aurai une autre question qui suit le raisonnment inverse.

    Dans une requête j'aimerai afficher le résultat que suivant un mois sélectioné. Comme avant la date n'etait pas en timestamp, je faisais comme ca (pour le mois de février par exempl) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mo2='02';
    $mois2=mysql_query('select * from users_extend WHERE T1 LIKE \'%/'.$mo2.'/%\'');
    Mais maintenant que la date est en Timestamp, il faut faire comment ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $mo2 = 2;
    $mois2 = mysql_query("select * from users_extend WHERE MONTH(FROM_UNIXTIME(T1)) = $mo2");


    /!\ Les variables ne sont pas interpolées (remplacées par leur valeur) dans une chaîne délimitée par simples quotes.

    (Les fonctions MySQL relatives aux dates)

  5. #5
    oim
    oim est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 118
    Par défaut
    Merci, ca fonctionne presque ; quand le Timestamp est négatif ca ne marche pas, j'ai essayé au format AAAA/MM/JJ et non plus.

    Je suis entrain de lire le lien, je vais bien trouver....

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Essayons avec :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM users_extend WHERE MONTH(IF(T1 >= 0, FROM_UNIXTIME(T1), SUBDATE('1970-01-01', INTERVAL ABS(T1) SECOND))) = $mo2

  7. #7
    oim
    oim est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 118
    Par défaut
    Un grand merci, en 30 secondes le problème a été réglé alors que sur google je n'avais tjrs pas trouvé (je devais mal chercher)

    Edit : ca fonctionne parfaitement pour les années et les mois mais pas les jours, j'essaye comme ca pour les jours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DAY(IF(T1 >= 0, FROM_UNIXTIME(T1), SUBDATE('1970-01-01', INTERVAL ABS(T1) SECOND)))
    Ce n'est pas "Day" qu'il faut mettre ?

    Parce que j'essaye de faire une selection par rapport au mois et au jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE MONTH(IF(T1 >= 0, FROM_UNIXTIME(T1), SUBDATE('1970-01-01', INTERVAL ABS(T1) SECOND)))='$emonth' AND DAY(IF(T1 >= 0, FROM_UNIXTIME(T1), SUBDATE('1970-01-01', INTERVAL ABS(T1) SECOND)))='$eday'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Timestamp dans une requête MySQL SELECT
    Par Nowwis dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2009, 11h33
  2. Limitation de colonnes TIMESTAMP dans SQL Server
    Par eguilloteau dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/06/2005, 11h05
  3. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15
  4. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo