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

MySQL Discussion :

Format date et time dans sql


Sujet :

MySQL

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Par défaut Format date et time dans sql
    Bonjour, voilà , j'importe une feuille excel dans ma base de données . la feuille contient une colonne date et une autre colonne heure. le problème c'est qu'àprès l'importation, dans la table sql les champs date et heure de type respectif date et time sont à 0000-00-00 et 00:00:00 or dans la feuille excel j'avais personnalisé le format (voir les images jointes).
    Conmment faire pour ne plus avoir les 00 dans sql, merci
    ps: j'utilise phpmyadmin de wamp

    Merci d'avanceNom : excel.PNG
Affichages : 798
Taille : 6,6 KoNom : sql.PNG
Affichages : 731
Taille : 5,1 Ko

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 001
    Billets dans le blog
    6
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 889
    Par défaut
    Salut nabil-karim.

    Nous ne sommes pas des devins.
    Pouvez-vous nous communiquer :
    --> le descriptif de la table mysql que vous désirez charger.
    --> un extrait de votre fichier Excel ".csv", là où il y a des dates et des heures. Donnez-nous le format de vos dates et heures.
    --> le "load datalocal infile" que vous avez fait.

    Je pense soit que vous avez un problème de format, soit vous gérez mal votre chargement.

    @+

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Par défaut
    Bonjour, voici en attacher le fichier excel (donnees.xlsx)
    et le code de la base de donnée et ca me donne en resultat 0000-00-00 pour la date et 00:00:00 pour l'heure

    Ps: pour charger le contenudu fichier excel, j'utilise phpExcel, j'ai téléchargé la librairie 1.8 et avec un script en php je lis le fichier excel que je sauvegarde dans une tableau et apres dans le code je fais des INSERT pour alimenter la table "donnees" dans la base de données "mydb"
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
    SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
    SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
     
    -- -----------------------------------------------------
    -- Schema mydb
    -- -----------------------------------------------------
     
    -- -----------------------------------------------------
    -- Schema mydb
    -- -----------------------------------------------------
    CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
    SHOW WARNINGS;
    USE `mydb` ;
     
    -- -----------------------------------------------------
    -- Table `mydb`.`donnees`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`donnees` (
      `day` DATE NOT NULL,
      `hour` TIME(0) NOT NULL,
    ENGINE = InnoDB;
     
    SHOW WARNINGS;
     
     
    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
    Fichiers attachés Fichiers attachés

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 889
    Par défaut
    Salut nabil-karim.

    1) transformer votre fichier donnees.xlsx dans un format exploitable par l'utilitaire "load data local infile".
    Dans Excel, vous cliquez sur "enregistrez sous...", puis dans "type", vous sélectionnez "CSV (séparateur: point-virgule)(*.csv)".
    Votre nouveau fichier porte le nom de "donnes.csv". Voici ce que vous obtenez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Day;Hour
    2017-04-04;00:00:00
    2017-04-04;01:00:00
    2017-04-04;2:00:00
    2017-04-04;3:00:00
    2017-04-04;4:00:00
    2017-04-04;5:00:00
    2017-04-04;6:00:00
    2017-04-04;7:00:00
    2017-04-04;8:00:00
    2017-04-04;9:00:00
    2017-04-04;10:00:00
    2017-04-04;11:00:00
    2017-04-04;12:00:00
    2017-04-04;13:00:00
    2017-04-04;14:00:00
    2017-04-04;15:00:00
    2017-04-04;16:00:00
    2017-04-04;17:00:00
    2017-04-04;18:00:00
    2017-04-04;19:00:00
    2017-04-04;20:00:00
    2017-04-04;21:00:00
    2017-04-04;22:00:00
    2017-04-04;23:00:00
    2) vous remarquez que la première ligne contient le nom de vos colonnes que vous ne devez surtout pas charger dans votre table de travail.

    3) et voici l'exécution du chargement du fichier "*.csv" dans votre table de travail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS trav
    --------------
     
    --------------
    CREATE TABLE trav (
      `id`    integer unsigned NOT NULL auto_increment primary key,
      `day`   date             NOT NULL,
      `hour`  time             NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    LOAD DATA LOCAL INFILE 'donnees.csv'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 1 LINES
         (`day`, `hour`)
    --------------
     
    --------------
    select * from trav
    --------------
     
    +----+------------+----------+
    | id | day        | hour     |
    +----+------------+----------+
    |  1 | 2017-04-04 | 00:00:00 |
    |  2 | 2017-04-04 | 01:00:00 |
    |  3 | 2017-04-04 | 02:00:00 |
    |  4 | 2017-04-04 | 03:00:00 |
    |  5 | 2017-04-04 | 04:00:00 |
    |  6 | 2017-04-04 | 05:00:00 |
    |  7 | 2017-04-04 | 06:00:00 |
    |  8 | 2017-04-04 | 07:00:00 |
    |  9 | 2017-04-04 | 08:00:00 |
    | 10 | 2017-04-04 | 09:00:00 |
    | 11 | 2017-04-04 | 10:00:00 |
    | 12 | 2017-04-04 | 11:00:00 |
    | 13 | 2017-04-04 | 12:00:00 |
    | 14 | 2017-04-04 | 13:00:00 |
    | 15 | 2017-04-04 | 14:00:00 |
    | 16 | 2017-04-04 | 15:00:00 |
    | 17 | 2017-04-04 | 16:00:00 |
    | 18 | 2017-04-04 | 17:00:00 |
    | 19 | 2017-04-04 | 18:00:00 |
    | 20 | 2017-04-04 | 19:00:00 |
    | 21 | 2017-04-04 | 20:00:00 |
    | 22 | 2017-04-04 | 21:00:00 |
    | 23 | 2017-04-04 | 22:00:00 |
    | 24 | 2017-04-04 | 23:00:00 |
    +----+------------+----------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    Appuyez sur une touche pour continuer...
    Aucune difficulté particulière !

    Vous remarquez la ligne :
    qui permet d'ignorer la première ligne de votre fichier.

    @+

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Par défaut
    Bonjour, merci mais je crois que je ne peux pas utiliser cette méthode car j'utilise une sorte d'importation automatique avec PHPExcel qui utilise ce script pour importer à partir d'un fichier dont le chemin du fichier est mis en paramètre dans le script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <?php
        require '/Classes/PHPExcel.php';
        require_once 'Classes/PHPExcel/IOFactory.php';
        $host = 'localhost';
        $username = 'root';
        $password = '';
        $dbname = 'mydb';
        $link= mysqli_connect($host,$username,$password,$dbname);
    	if (!$link) {
        echo "Error: Unable to connect to MySQL." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
        exit;}
       echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
       echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
     
        $path = "donnees.xlsx";
        $queryArray = array();
        $objPHPExcel = PHPExcel_IOFactory::load($path);
        $flag=true;
        foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
            $worksheetTitle     = $worksheet->getTitle();
            if($flag)
            {
                $highestRow         = 0;
                $highestColumn      = 'A';
                $flag= false;
            }
            $curRow         = $worksheet->getHighestRow(); 
            $curColumn      = $worksheet->getHighestColumn(''); 
            $curColumnIndex = PHPExcel_Cell::columnIndexFromString($curColumn);
            $highestRow = ($highestRow<$curRow)?$curRow:$highestRow;
            $highestColumn = ($highestColumn<=$curColumn)?$curColumn:$highestColumn;
            $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
            $nrColumns = ord($highestColumn) - 64;
            echo "<br>The worksheet ".$worksheetTitle." has ";
            echo $nrColumns . ' columns (A-' . $highestColumn . ') ';
            echo ' and ' . $curRow . ' row.';
            echo '<br>Data: <table border="1"><tr>';
            for ($row = 2; $row <= $curRow;$row++) {
                echo '<tr>';
                for ($col = 0; $col < $curColumnIndex; $col++) {
                    $cell = $worksheet->getCellByColumnAndRow($col, $row);
                    $val = $cell->getCalculatedValue();
                    $queryArray[$row][$col] = (string)$val;
                    echo '<td>'.$val.'<br></td>';
                }
                echo '</tr>';
            }
            echo '</table>';
        }   
     
            $sql = 'INSERT INTO donnees VALUES';
            $value = NULL;
            foreach($queryArray as $v)
            {   
                $value .=  '(';
                foreach ($v as $check)  
                    $value .= '\''.$check.'\',';
                $value = substr($value,0,-1);
                $value .= '),';
            }
            $sql.=substr($value,0,-1).';';
            //echo $sql;
     
    		 $result_delete=mysqli_query($link, 'DELETE from donnees');
    		 if($result_delete==true)echo 'Success delete donnees'.'<br>';
    		 else echo 'Failure delete donnees'.'<br>';
     
    		 $result_import=mysqli_query($link, $sql);
    		 if($result_import==true)echo 'Success import'.'<br>';
    		 else echo 'Failure import'.'<br>';
     
     
        ?>
    Par contre dans votre solution, ca n'utilise pas PHPExcel

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 889
    Par défaut
    Salut nabil-karim.

    Désolé de ne pouvoir vous aider sur phpExcel.
    Le mieux est de poser la question dans le forum consacré à php.

    @+

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Par défaut
    J'ai essayé de trouver un moyen de palier au problème, et c'est fait
    merci quand même pour ton aide

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

Discussions similaires

  1. [SQL] format date time dans sql
    Par VuVietHai dans le forum SAS Base
    Réponses: 4
    Dernier message: 20/06/2014, 18h09
  2. Réponses: 6
    Dernier message: 19/10/2009, 10h01
  3. Date et Time en SQL
    Par akli_agha dans le forum Bases de données
    Réponses: 6
    Dernier message: 26/09/2008, 22h17
  4. insertion date et heure dans SQL server
    Par robinash dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/01/2008, 17h40
  5. Comment changer le format d'un TIME dans EasyPHP
    Par brazilia28 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 08/12/2006, 17h31

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