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 :

datetime via SQL server et traitement PHP different selon les versions


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 18
    Points
    18
    Par défaut datetime via SQL server et traitement PHP different selon les versions
    Bonjour, j'ai un soucis qui me triture depuis plusieurs heures maintenant concernant le format datetime d'un serveur SQL Server 2008.

    Je vous explique mon soucis, nous avons deux serveurs sous linux et nous upgradons la versions PHP (5.3 vers 5.4.4), nous avons donc fais la mise à jour sur un de deux et migré les applis tournant sous 5.3 vers 5.4.4, a part quelques fonctions deprecated que nous avons remplacé, nous rencontrons un soucis plus important et beaucoup plus gênant sur les datetime stockés dans notre BDD.

    En effet, le résultat diffère selon la version php (est ce que ca vient bien de là ? c'est ce que je pense) je vous détail ici un example :

    Dans ma base de données j'ai un datetime :

    2013-12-05 15:42:13.050

    Sous php 5.3 nous le récupérons tel que avec une reqûete et nous appliquons un petit traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    date('d/m/Y H:i:s',strtotime($arrayResult['date_saisie'])); 
    ?>
    Qui nous retourne :
    05/12/2013 15:42:13

    Ce qui est parfait

    Par contre sous PHP 5.4.4 pour le même traitement nous avons :
    12/05/2013 03:42:13

    Voici le problème :Le mois et le jour sont inversés et l'heure est sur un format 12h et non 24h.

    Comme le mois et le jour sont inversés, si la date est par exemple :
    2013-11-25 10.41.33.110

    Nous avons donc sous php5.3 => 28/10/2013 15:54:02

    Mais sous PHP5.4.4 nous avons => 01/01/1970 01:00:00

    Comme il interprète le mois comme étant 25 il déclenche une erreur .

    Ma question est de savoir si il y a une configration spécifique au niveau du serveur dans le php.ini ou autre a mettre ?

    Devons-nous faire un convert(varchar(24)) dans notre requête sql comme j'ai pu le voir partout ? cette solution nous oblige à tout modifier et serait la dernière possibilité

    Merci à vous

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    J'ai executé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo date('d/m/Y H:i:s',strtotime('2013-11-25 10.41.33.110'));
    Et j'ai reçuSous La version PHP 5.5.3-1ubuntu2.1.
    Je crois pas que la fonction date sous php 5.4 a changé de fonctionnement
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Eh bien en faisant comme toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayResult['date_saisie'] =  date('d/m/Y H:i:s',strtotime('2013-11-25 10.41.33.110'));
    j'ai également le résultat 25/11/2013 10:41:33

    Donc cela vient du retour de mssql_query sur un datetime mais je ne vois pas pourquoi cela diffère entre les deux serveurs

    Par contre je viens de réflechir et j'ai du installer freetds pour utiliser mssql au lieu sql_srv cela ne viendrait-il pas de la ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Regarde precisemment ce que tu récupères de ta base de données, fatalement dans le mauvais cas, ce n'est pas '2013-11-25 10.41.33.110'
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Le soucis venait d'une mauvaise configuration au niveau de freetds ...

    Désolé de vous avoir dérangé pour rien

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

Discussions similaires

  1. tracer une courbe via SQL server 2005?
    Par zakaroh dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/04/2008, 17h42
  2. [probleme] connection sql server express avec php
    Par buse974 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/02/2008, 11h54
  3. sql server 2000 + iis6 +. . . PHP ?
    Par cyberio dans le forum IIS
    Réponses: 6
    Dernier message: 12/09/2007, 16h58
  4. Connexion à SQL Server depuis Easy PHP
    Par XGotX dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/03/2007, 11h30
  5. [SQL-SERVER] Envoi de message via SQL server
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/03/2006, 10h41

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