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

Langage SQL Discussion :

Format date Teradata


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Par défaut Format date Teradata
    Bonjour,

    j'aimerais pouvoir caster un champ caractère en format date mais je n'y arrive pas. J'ai essayé beaucoup de chose mais j'ai toujours l'erreur: Invalid date supplied for...

    voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    	benf_dd_admis_ben, 
    	case when extract(month from benf_dd_admis_ben) < 4 
    		then cast('2011-' || cast(cast(extract(month from benf_dd_admis_ben) as format '99') as char(2)) || '-' || cast(cast(extract(day from benf_dd_admis_ben) as format '99') as char(2)) as date format 'YYYY-MM-DD')
    		else cast('2010-' || cast(cast(extract(month from benf_dd_admis_ben) as format '99') as char(2)) || '-' || cast(cast(extract(day from benf_dd_admis_ben) as format '99') as char(2)) as date format 'YYYY-MM-DD')
    	end ANNIV
    from V_ADMIS_BEN
    where benf_cod_situ_admis between 156 and 159
    order by 1,2;
    Merci !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Tu peux essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  benf_dd_admis_ben
        ,   CASE WHEN EXTRACT(MONTH FROM benf_dd_admis_ben) < 4 
    		    THEN CAST('2011-' || CAST(EXTRACT(MONTH FROM benf_dd_admis_ben) AS CHAR(2) FORMAT '99') || '-' || CAST(EXTRACT(DAY FROM benf_dd_admis_ben) AS CHAR(2) FORMAT '99') AS DATE FORMAT 'YYYY-MM-DD')
    		    ELSE CAST('2010-' || CAST(EXTRACT(MONTH FROM benf_dd_admis_ben) AS CHAR(2) FORMAT '99') || '-' || CAST(EXTRACT(DAY FROM benf_dd_admis_ben) AS CHAR(2) FORMAT '99') AS DATE FORMAT 'YYYY-MM-DD')
    	      END AS anniv
    FROM    v_admis_ben
    WHERE   benf_cod_situ_admis BETWEEN 156 AND 159
    ORDER BY 1,2;
    L'expression peut être simplifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST('2011-' || CAST(CAST(benf_dd_admis_ben AS CHAR(5) FORMAT 'mm-dd') AS DATE FORMAT 'YYYY-MM-DD')
    Tu peux aussi utiliser la syntaxe spécifique de Teradata
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ('2011-' || benf_dd_admis_ben (CHAR(5), FORMAT 'mm-dd')) (DATE, FORMAT 'YYYY-MM-DD')
    PS : Je n'ai pas de serveur Teradata sous la main pour tester
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Par défaut
    J'ai des erreurs de format... pour la première requête, on me dit: Format "99" does not match the datatype

    Et pour les deux autres: Format "dd-mm" does not match the datatype.

    Je vais essayer de faire fonctionner ces nouvelles idées...

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

Discussions similaires

  1. Format date : y'a forcément plus simple...
    Par ZERS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/12/2004, 15h28
  2. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20
  3. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 10h18
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 17h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 08h37

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