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

SQL Firebird Discussion :

Conversion Timestamp vers varchar


Sujet :

SQL Firebird

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 5
    Par défaut Conversion Timestamp vers varchar
    Je voudrais savoir si la conversion d'un TimeStamp vers un varchar est possible et si oui que est la methode à utiliser

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Oui c'est possible avec l'opérateur CAST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Cast(MonTimeStamp as Varchar(24)) from Matable;
    Pour le vérifier tres vite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cast(cast('now' as timestamp) as varchar(24)) from rdb$Database;
    Résulat :
    2004-01-07 14:50:38.0000

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 5
    Par défaut
    Merci pour ta reponse mais j'appelle cque tu m'as donnes dans une procedure stockée

    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
     
    CREATE PROCEDURE PORTAL_ADDMESSAGE (
        VTITLE VARCHAR (100),
        VBODY VARCHAR (3000),
        VPARENTID INTEGER,
        VUSERNAME VARCHAR (100),
        VMODULEID INTEGER)
     
    RETURNS (VITEMID INTEGER)
     
    AS
    /* Find DisplayOrder of parent item */
    declare variable  vParentDisplayOrder  varchar(750);
    declare variable  vdate  timestamp;
     
    begin
     vParentDisplayOrder= '';
     
    SELECT DisplayOrder
    FROM Portal_Discussion
    WHERE ItemID = :vParentID into :vParentDisplayOrder
     
    do begin
    select cast(cast('now' as timestamp)  as varchar(24)) from rdb$database
    into :vdate ;
     
    begin
       INSERT INTO Portal_Discussion
       (
           Title,
           Body,
           DisplayOrder,
           CreatedDate,
           CreatedByUser,
           ModuleID
       )
     
       VALUES
       (
           :vTitle,
           :vBody,
           :vParentDisplayOrder + :vdate,
           cast('now' as timestamp) ,
           :vUserName,
           :vModuleID
       );
    end
    end
    et je reçois comme messege d'erreur
    fmCompile.quCompile:
    Unsuccessful execution caused by a system error that precludes
    successful execution of subsequent statements.
    Dynamic SQL Error.
    expression evaluation not supported.

  4. #4
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut

    A premiere vue il y a quelques incohérences...
    Je ne suis pas encore bien reveillé mais voici ce qui me saute aux yeux :
    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
     
    CREATE PROCEDURE PORTAL_ADDMESSAGE (
        VTITLE VARCHAR (100),
        VBODY VARCHAR (3000),
        VPARENTID INTEGER,
        VUSERNAME VARCHAR (100),
        VMODULEID INTEGER)
     
    RETURNS (VITEMID INTEGER)
     
    AS
    /* Find DisplayOrder of parent item */
    declare variable  vParentDisplayOrder  varchar(750);
    declare variable  vdate  timestamp;
     
    begin
     vParentDisplayOrder= '';
     
    SELECT DisplayOrder
    FROM Portal_Discussion
    WHERE ItemID = :vParentID into :vParentDisplayOrder
     
    do begin
    Que fait ce do begin ici ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select cast(cast('now' as timestamp)  as varchar(24)) from rdb$database
    into :vdate ;
    tu as déclaré vdate en timestamp donc il devrait y avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select cast('now' as timestamp) from rdb$database
    into :vdate ;
    Ensuite
    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
     
       INSERT INTO Portal_Discussion
       (
           Title,
           Body,
           DisplayOrder,
           CreatedDate,
           CreatedByUser,
           ModuleID
       )
     
       VALUES
       (
           :vTitle,
           :vBody,
           :vParentDisplayOrder + :vdate,
           cast('now' as timestamp) ,
           :vUserName,
           :vModuleID
       );
    end
    end
    vParentDisplayOrder est de type Varchar(750) et vdate timestamp donc les additionner avec un +, je ne suis pas certain que ca fonctionne....

    Voilà plutot ce que j'écrirai :

    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
    CREATE PROCEDURE PORTAL_ADDMESSAGE ( 
        VTITLE VARCHAR (100), 
        VBODY VARCHAR (3000), 
        VPARENTID INTEGER, 
        VUSERNAME VARCHAR (100), 
        VMODULEID INTEGER) 
     
    RETURNS (VITEMID INTEGER) 
     
    AS 
    /* Find DisplayOrder of parent item */ 
    declare variable  vParentDisplayOrder  varchar(750); 
     
    begin 
      vParentDisplayOrder= ''; 
     
      SELECT DisplayOrder 
        FROM Portal_Discussion 
        WHERE ItemID = :vParentID into :vParentDisplayOrder 
     
      INSERT INTO Portal_Discussion 
      ( 
          Title, 
          Body, 
          DisplayOrder, 
          CreatedDate, 
          CreatedByUser, 
          ModuleID 
      ) 
      VALUES 
      ( 
          :vTitle, 
          :vBody, 
          :vParentDisplayOrder || cast('now' as varchar(24)), 
          cast('now' as timestamp) , 
          :vUserName, 
          :vModuleID 
      ); 
     
    end

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 5
    Par défaut
    Merci pour tes reponses explicite

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

Discussions similaires

  1. Erreur de conversion de type, varchar vers datetime
    Par Marc_3 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/06/2012, 21h46
  2. Conversion timestamp vers date
    Par ldiaz dans le forum PL/SQL
    Réponses: 4
    Dernier message: 27/05/2011, 12h01
  3. Conversion timestamp perl vers timestamp Oracle
    Par danathane dans le forum SGBD
    Réponses: 3
    Dernier message: 26/01/2009, 16h45
  4. Conversion timestamp vers date avec oracle 9.2
    Par gaboo_bl dans le forum Oracle
    Réponses: 5
    Dernier message: 27/11/2006, 14h10
  5. conversion date timestamp vers date mysql
    Par seb0026 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/10/2005, 19h48

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