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 :

[Teradata] problème avec un champ date/heure


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut [Teradata] problème avec un champ date/heure
    Bonjour,

    j'essaie de soustraire les dates de deux champs date/heure:

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select TD_BASE.srtq_dh_depar_sej_rtq (date) - TD_BASE.srtq_dh_arriv_sej_rtq (date)
    from acptn_res_sss.X_SEJ_TRAUM_RTQ TD_BASE
    Mais j'ai une erreur: Code = 3706.
    3706: Syntax error: expected something between ')' and '-'.

    Je ne peux pas soustraire de cette façon ??

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 102
    Points : 28 401
    Points
    28 401
    Par défaut
    De quel SGBD s'agit-il ?
    La syntaxe que tu utilises me fait penser à Teradata. Si c'est le cas, il faut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT    (td_base.srtq_dh_depar_sej_rtq (DATE)) - (td_base.srtq_dh_arriv_sej_rtq (DATE))
    En conformité avec la nome SQL, il faudrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT    CAST(td_base.srtq_dh_depar_sej_rtq AS DATE) - CAST(td_base.srtq_dh_arriv_sej_rtq AS DATE)

  3. #3
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut
    Merci, c'est bien teradata...

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 102
    Points : 28 401
    Points
    28 401
    Par défaut
    Teradata accepte aussi la syntaxe normalisée.
    La première syntaxe est plus simple à écrire et n'est conservée que pour des raisons historiques, puisqu'elle existait dans le SGBD avant la définition de CAST dans la norme.

  5. #5
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    j'en ai une meilleure mais je ne trouve pas la réponse.

    J'essaie de trouver le nombre d'heures écoulées entre deux dates/heures. C'est-à-dire que si j'ai une date/heure à 23h du soir qui se à 1h du matin, j'aimerais avoir comme réponse 2h.

    2008-05-26 01:20:00 moins 2008-05-25 23:20:00

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select TD_BASE.srtq_dh_depar_sej_rtq - TD_BASE.srtq_dh_arriv_sej_rtq
    from acptn_res_sss.X_SEJ_TRAUM_RTQ TD_BASE
    Code = 5407.
    5407: Invalid operation on an ANSI Datetime or Interval value.

    Je ne peux pas soustraire de cette façon ??

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Salut! Et comme ça, ça marcherait pas:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DATEDIFF(hour,TD_BASE.srtq_dh_depar_sej_rtq ,TD_BASE.srtq_dh_arriv_sej_rtq )
    FROM acptn_res_sss.X_SEJ_TRAUM_RTQ TD_BASE

    J'espere que ça marchera

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 102
    Points : 28 401
    Points
    28 401
    Par défaut
    DATEDIFF n'appartient pas à la définition normalisée du langage SQL

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 102
    Points : 28 401
    Points
    28 401
    Par défaut
    Après vérification dans la doc, la différence entre deux TIMESTAMP est un INTERVAL.
    Tu dois préciser explicitement le type d'intervalle que tu veux traiter...

    Extraits de la documentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT (end_time - start_time) DAY(4) TO SECOND
    FROM BillDateTime;
    SELECT phone_no
    FROM PhoneTime
    WHERE (end_time - start_time) DAY(4) TO MINUTE > INTERVAL '30' MINUTE;
    Dans ton cas, si tu veux un nombre d'heures, ce pourrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT (TD_BASE.srtq_dh_depar_sej_rtq - TD_BASE.srtq_dh_arriv_sej_rtq) HOUR(4)
    FROM acptn_res_sss.X_SEJ_TRAUM_RTQ AS TD_BASE
    Ce qui te retourne un nombre d'heures limité à 9999 (c'est le maximum), soit un peu plus d'un an

  9. #9
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut
    Merci Beaucoup !

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

Discussions similaires

  1. Problème avec mon champ date dans le formulaire
    Par PetitChris dans le forum IHM
    Réponses: 4
    Dernier message: 28/08/2014, 09h37
  2. Problème avec les champ date MySql en VB.NET 2008
    Par nazzguhl dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/05/2011, 15h03
  3. Problème de récupération avec un champ date
    Par yannick63 dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/01/2010, 17h34
  4. Champ Problème avec les type Date
    Par useretl dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 05/11/2007, 10h23
  5. Problème d'insertion avec un champ Date/Heure ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/06/2006, 10h37

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