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 :

Strftime et question sur blob


Sujet :

SQLite

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Strftime et question sur blob
    Bonjour à tous,

    J'ai un petit problème avec strftime. j'ai actuellement un champs en Datetime au format MM-JJ-YY H:I:S.
    Je voudrais avant d'afficher ma date la convertir au format français.

    J'arrive sans problème a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT strftime("%d/%m/%y %H:%M:%S",'now','locatime')
    Mais je n'arrive pas à faire de même avec mon champs date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT strftime("%d/%m/%y %H:%M:%S",`date`,'locatime')
    Cela me retourne simplement NULL

    Une idée ?

    Mon autre question concerne les champs Blob. Je dois stocker des images (je sais qu'il est préférable de stocker le chemin , mais dans le cas présent je n'ai pas le choix).
    Sachant que ces champs peuvent être null comment puis je dans ma requête de selection retourner 1 ou 0 selon si un blob est dispo ou non ?

    Etant donné que j'affiche les images via un lien du genre "cliquer pour voir l'image" je n'ai pas besoin dans ma première requete de récupérer toutes la data , mais j'ai besoi nde savoir si elle existe pour afficher ou non le lien.
    Comment puis je faire cela ?

    Merci pour vos réponses
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Par défaut
    Bonjour,

    Pour ce qui est de ta première question, il te faut transformer la chaîne "MM-JJ-YY H:I:S" dans un format de date/heure compréhensible par SQLite.
    (je sais, je sais, c'est justement ta question)

    En effet, SQLite ne reconnais que l'un des formats suivants :
    (cf. http://sqlite.perso.sfr.fr/lang_datefunc.html )
    La chaîne timestring

    La chaîne timestring peut prendre les formes suivantes :

    1. YYYY-MM-DD
    2. YYYY-MM-DD HH:MM
    3. YYYY-MM-DD HH:MM:SS
    4. YYYY-MM-DD HH:MM:SS.SSS
    5. YYYY-MM-DDTHH:MM
    6. YYYY-MM-DDTHH:MM:SS
    7. YYYY-MM-DDTHH:MM:SS.SSS
    8. HH:MM
    9. HH:MM:SS
    10. HH:MM:SS.SSS
    11. now
    12. DDDDDDDDDD
    Il te faut donc convertir ta colonne dans ce format. Cela peut être effectué dans une vue, ou par un trigger qui rectifie la date, ou encore un trigger qui recopie la date dans un autre champ.

    Comment faire ?
    Prenons comme exemple une table simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create table m(dt text);
    insert into m values ('07-08-09 19:48:35');
    Dans cette table, dt représente ton champ à traduire selon le format "MM-JJ-YY H:I:S", j'ai pris le 8 juillet 2009 comme exemple.

    Pour obtenir un texte compréhensible par les fonctions datetime :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select '20'||substr(dt,7,2)||'-'||substr(dt,1,3)||substr(dt,4,2)||substr(dt,9)
    from m;
    Qui retournera la chaîne : "2009-07-08 19:48:35"


    Cette chaîne peut ensuite être utilisée par des fonctions travaillant sur des dates comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select strftime('%d/%m/%Y %H:%M:%S',
    '20'||substr(dt,7,2)||'-'||substr(dt,1,3)||substr(dt,4,2)||substr(dt,9),
    'localtime')
    from m;
    Qui retournera la chaîne : "08/07/2009 21:48:35"

    PS: La fonction strftime() est très susceptible, il ne faut pas faire de faute d'orthographe dans les modificateurs de temps, sinon elle retournera NULL sans autre forme de procès. Dans ton exemple, tu indiques 'locatime' et non pas 'localtime', d'où les NULLS.

    Pour ce qui est de la seconde question, c'est comme si l'on demandait la présence d'un NULL ou pas dans un champ quelconque. Sous Oracle, on a la fonction NVL() qui permet d'avoir la réponse facilement. Sous SQLite, on une astuce moins jolie mais toute aussi performante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select CASE WHEN monChamp IS NULL THEN 0 ELSE 1 END from maTable;
    Tu as le diagramme de syntaxe des expressions ici :
    http://sqlite.perso.sfr.fr/lang_expr.html

    a+

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Super ! merci pour cette réponse très détaillée.

    Pour les timestring , c'est une erreur de conception de ma part , ayant l'habitude de travailler avec mysql je me suis pas vraiment posé la question. Mais la table n'étant pas arretée , ca ne seras pas un problème de changer.

    Merci encore
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. question sur lecture de BLOB
    Par temoanatini dans le forum PL/SQL
    Réponses: 1
    Dernier message: 03/11/2011, 17h53
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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