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

Adaptive Server Enterprise Sybase Discussion :

[ASE]Utiliser timestamp dans une clause WHERE


Sujet :

Adaptive Server Enterprise Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 25
    Par défaut [ASE]Utiliser timestamp dans une clause WHERE
    Bonjour,

    Ma question est la suivante:

    Peut on se baser sur la colonne timestamp d'une table afin de ne récupérer que les lignes qui ont été modifiées ou crées à partir d'une date donnée ?

    Si oui comment faire ?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    Salut !
    Peux tu donner plus de précisions sur cette colonne "timestamp" s'il te plait.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 25
    Par défaut
    Hello,

    j'ai des tables qui ont été crée avec une colonne de type timestamp.
    Lorsque des insert sont fait sur cette table, ce champs est mis à jour automatiquement par rapport à la date du systeme je suppose ? (de meme lors des update)

    Je ne sais pas comment l'utiliser, apparemment c'est different d'un datetime...
    Si quelqu'un peux m'expliquer à quoi correspond ce type?

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    Apparemment tu ne peux pas l'utilser en la comparant à une date car elle ne contient aucune information de date/heure:

    extrait du manuel de référence PDF "Vol1 élément syntaxique":


    Contrairement au type de données timestamp standard de SQL, le
    type timestamp de Transact-SQL ne contient pas d’information sur la
    date et l’heure. Il contient des données de type binaire, comme
    celle-ci :
    timestamp
    ------------------
    0x0001000000000e51



  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 25
    Par défaut
    Oki merci SQL972 pour la réponse.
    Si je comprend bien il est donc possible de les comparer entre eux mais pas avec des datetimes...
    Dommage... si quelqu'un a une idée sur un moyen de comparer un Timestanp à une date , je suis preneur

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    Tu pourrais créer une colonne de type Datetime qui serait mise à jour par un trigger...

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut where sur le champs timestamp
    bonjour

    c'est possible d'utiliser la close where sur le champs timestamp pour recupérer les lignes à partir de la date
    etant donné que timestamp regroupe l'heure et la date, tu utilise la fonction left sur le champs timestamp parce ce que je crois que tu tu connais les dates sur lesquelles tu feras le tri

    exp


    select * from compte_client where left(ccl_timestamp,10)='2006-02-06'

    merci

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Euh... je crois qu'il doit y avoir confusion.

    Un champs "timestamp" dans Sybase ASE n'a aucune relation avec la date ou l'heure. C'est un champ binaire de 8 octets dont la valeur est mise à jour automatiquement chaque fois que l'enregistrement est modifié. Il n'est donc pas possible d'extraire la date à partir du timestamp.

    Le choix du nom de ce datatype est évidemment particulièrement malheureux... cela fait depuis 1989 que j'utilise Sybase, et depuis 1991 que je suis actif sur le net et j'ai l'impression que cette discussion est répétée au moins une fois par mois :-)

    Michael

  9. #9
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    bonjour


    Citation Envoyé par mpeppler
    Euh... je crois qu'il doit y avoir confusion.

    Un champs "timestamp" dans Sybase ASE n'a aucune relation avec la date ou l'heure. C'est un champ binaire de 8 octets dont la valeur est mise à jour automatiquement chaque fois que l'enregistrement est modifié. Il n'est donc pas possible d'extraire la date à partir du timestamp.



    Michael
    notre ami jeffk n'a pas precisé la version de sybase qu'il utilise
    mais si ce champ est binaire il faut alors faise un cast en datetime et ensuite il faire la requete
    mais toute fois je suis surpris d'apprendre que ds ASE le champs timestamp est binaire
    mais je suis moi depuis longtemp ds ASA il est de type datetime

    merci

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Comme je l'ai mentionné dans mon précédent message, dans ASE le champ timestamp n'a aucune relation avec la date ou l'heure:

    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
     
    [26] PEPM.testdb.1> select @@version;
     
     ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     Adaptive Server Enterprise/12.5.4/EBF 13388/P/Linux Intel/Enterprise Linux/ase1254/2006/32-bit/OPT/Fri May 19 23:17:01 2006 
     
    (1 row affected)
    [27] PEPM.testdb.1> create table tstamp(id int, t timestamp);
    [29] PEPM.testdb.1> insert tstamp(id) values(1);
    (1 row affected)
    [30] PEPM.testdb.1> select * from tstamp;
     id          t
     ----------- --------------------
               1   0x00000000004122a3
     
    (1 row affected)
    [31] PEPM.testdb.1> select getdate(), convert(datetime, t) from tstamp;
     
     ------------------- -------------------
     Jul 10 2006 10:11AM Jan  1 1900  5:36PM
     
    (1 row affected)
    Michael

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    bonjour jeffk

    pour mieux vous aider pouvez vous nous dire si vous utiliser ASE ou ASA
    et ton champ est bien de type timestamp?

    mpeppler merci pour le scrip. en executant le même scrip sous ASA nous avons le même resultat. mais le champ t est de type timestamp format special avec 4 octes
    alors je pense que pour repondre à notre ami il est possible de comparer un Timestanp à une date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    insert tstamp(id) values(1);
    select * from tstamp;
     
    select getdate(), convert(datetime, t) from tstamp;
     
    select * from tstamp where left(t,10)='2006-07-10'
    merci

Discussions similaires

  1. Utiliser un alias de colonne dans une clause Where MS SQL
    Par sir dragorn dans le forum Langage SQL
    Réponses: 11
    Dernier message: 12/10/2011, 09h31
  2. Lenteur à l'utilisation d'une fonction dans une clause WHERE
    Par lacombefr dans le forum Développement
    Réponses: 2
    Dernier message: 06/04/2010, 19h50
  3. Utiliser un champ Oui/Non dans une clause WHERE ?!
    Par _MattU_ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/06/2008, 13h32
  4. Utiliser une chaine de caractère dans une clause WHERE
    Par DanaX dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 15/05/2007, 12h02
  5. [SQL2K][TSQL] Peut-on utiliser un alias dans une clause Where ?
    Par StormimOn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/05/2006, 09h25

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