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

SQLite Discussion :

Quel est le bon format pour une date pour mes besoins ?


Sujet :

SQLite

  1. #1
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut Quel est le bon format pour une date pour mes besoins ?
    Bonjour

    Je découvre sqlite et souhaite créer une table avec une colonne date et une colonne time.
    J ai trouvé ici https://www.sqlitetutorial.net/sqlite-date/ que l on pouvait stocker ces types de plusieurs façons.

    Je souhaiterais utiliser la plus performante en terme de temps d exécution de requête(insertion/select) ou la moins vorace en mémoire.

    Je souhaite inserer les données dans la table en bouclant sur une Tstringlist qui sera contiendra des lignes formatées en fonction du type choisi.
    Je souhaite faire des requetes simples sur les dates (ex di date>=...)

    dans un post precedent j ai pu lire
    Strftime attend une timestring SQLITE. Les timestring sont au format ISO (YYYY-MM-DD HH-MM-SS) si tu veux utiliser les fonctions de date SQLITE alors tu vas devoir faire une conversion à base de substring.
    Donc je suis un peu perdu.

    Merci pour vos conseils

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 452
    Par défaut
    Bonjour,

    J'avais fait la réponse que tu cites car les dates de l'OP étaient dans un format qu'on ne peut pas trier ("27 Nov. 2019 12:24:53") et non compréhensibles par SQLITE.

    Pour traiter une date, tu as en gros deux formats (voir https://www.sqlite.org/lang_datefunc.html)

    * Les date sous forme de chaîne (time string) au format ISO (AAAA-MM-JJ HH:MM:SS.SSS)
    * sous forme numérique (date julienne)

    Personnellement, je ne suis jamais posé de question et j'utilise les dates sous forme de chaîne au format ISO car c'est cette forme qui est comprise nativement par SQLITE et qui permet les comparaisons et les tris.

    Tu peux aussi les stocker comme ton outil de développement les traite (cela pourrait éviter les conversions par exemple en DELPHI sous forme de TDATETIME) mais tu n'auras aucune méthode de conversion pour faire une requête directe à partir d'autres outils...

    J'ai également vu que certaines applications Android stockent les dates au format entier sous forme de temps UNIX en 10 millièmes de secondes.

    En terme de stockage le plus économe est probablement le format entier ou julien (https://www.sqlite.org/datatype3.html) car il utilisera au plus 8 octets cependant il te demandera des transformations lors des requêtes sauf si c'est un format natif de ton application...

    Cordialement

  3. #3
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    Merci pour cette réponse.

    Donc pour voir si j ai bien compris :
    j insère un DATE dans la table sous forme de string 'YYYY-MM-DD' comme je le ferais avec n importe quel string

    Par contre dans la doc je lis
    The strftime() routine returns the date formatted according to the format string specified as the first argument.
    Par contre est il possible d extraire la date formaté style delphi avec une requete du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select strftime('%d/%m-%Y', NomColonneDate)) as Jour...
    c est ce que j ai cru comprendre en lisant la doc
    The strftime() routine returns the date formatted according to the format string specified as the first argument.
    dsl suis au boulot et peut pas tester... et non tout le monde ne peut pas télé travailler ;-)

    merci

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 452
    Par défaut
    Bonjour,

    Donc pour voir si j ai bien compris :
    j insère un DATE dans la table sous forme de string 'YYYY-MM-DD' comme je le ferais avec n importe quel string
    Oui

    Par contre est il possible d extraire la date formaté style delphi avec une requete du style
    Il y a une parenthèse de trop mais cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select strftime('%d/%m-%Y', '2019-03-15') as Jour
    donne

    15/03-2019
    Je m'étais fait une fonction pour transformer une date ISO en TDATETIME Delphi (sous lazarus on a ScanDateTime mais je ne l'ai pas vu en Delphi...

    Cordialement

  5. #5
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    Merci c est parfait.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Bonjour
    Citation Envoyé par acaumes Voir le message
    Je m'étais fait une fonction pour transformer une date ISO en TDATETIME Delphi (sous lazarus on a ScanDateTime mais je ne l'ai pas vu en Delphi...
    Avec les versions modernes StrToDate en indiquant un bon FormatSettings avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var aFormatSettings: TFormatSettings; 
         uneDate : TDate;
    ...
    aFormatSettings:=TFormatSettings.Create;
    aFormatSettings.DateSeparator:='-';
    aFormatSettings.ShortDateFormat:='yyyy-MM-dd';
    ...
    unedate:=StrToDate('2020-03-17',aformatSettings);

  7. #7
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    merci pour cette précision

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

Discussions similaires

  1. Java, un bon choix pour mes besoins ?
    Par Neckara dans le forum Général Java
    Réponses: 36
    Dernier message: 19/05/2014, 14h20
  2. Réponses: 11
    Dernier message: 26/08/2011, 21h43
  3. Réponses: 6
    Dernier message: 29/03/2010, 15h58
  4. Réponses: 8
    Dernier message: 30/11/2007, 14h15
  5. Réponses: 18
    Dernier message: 31/07/2007, 17h29

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