Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/06/2006, 10h39   #1
Invité de passage
 
Inscription : juin 2004
Messages : 25
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 25
Points : 3
Points : 3
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
JeffK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 10h58   #2
Membre à l'essai
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 20
Points : 20
Salut !
Peux tu donner plus de précisions sur cette colonne "timestamp" s'il te plait.
SQL972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 11h12   #3
Invité de passage
 
Inscription : juin 2004
Messages : 25
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 25
Points : 3
Points : 3
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
JeffK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 11h42   #4
Membre à l'essai
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 20
Points : 20
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


SQL972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 15h26   #5
Invité de passage
 
Inscription : juin 2004
Messages : 25
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 25
Points : 3
Points : 3
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
JeffK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 16h36   #6
Membre à l'essai
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 20
Points : 20
Tu pourrais créer une colonne de type Datetime qui serait mise à jour par un trigger...
SQL972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2006, 12h34   #7
Membre du Club
 
Inscription : janvier 2006
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 47
Points : 52
Points : 52
Envoyer un message via AIM à LOEMBA Envoyer un message via MSN à LOEMBA Envoyer un message via Yahoo à LOEMBA Envoyer un message via Skype™ à LOEMBA
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
LOEMBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 07h59   #8
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à 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.

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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 10h06   #9
Membre du Club
 
Inscription : janvier 2006
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 47
Points : 52
Points : 52
Envoyer un message via AIM à LOEMBA Envoyer un message via MSN à LOEMBA Envoyer un message via Yahoo à LOEMBA Envoyer un message via Skype™ à LOEMBA
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
LOEMBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 10h12   #10
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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 :
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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 15h05   #11
Membre du Club
 
Inscription : janvier 2006
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 47
Points : 52
Points : 52
Envoyer un message via AIM à LOEMBA Envoyer un message via MSN à LOEMBA Envoyer un message via Yahoo à LOEMBA Envoyer un message via Skype™ à LOEMBA
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 :
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
LOEMBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 08h20   #12
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
D'après le sujet il s'agit d'ASE.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 16h03   #13
Membre du Club
 
Inscription : janvier 2006
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 47
Points : 52
Points : 52
Envoyer un message via AIM à LOEMBA Envoyer un message via MSN à LOEMBA Envoyer un message via Yahoo à LOEMBA Envoyer un message via Skype™ à LOEMBA
ok si notre ami est sur ASE ça devrait marché car je me suis mi sur son context ça marche chez moi

jeffk essai

merci
LOEMBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 16h29   #14
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Bon, je vais quand même réitérer ce que j'ai dis plus haut...

Il n'y a aucune relation entre le champs "timestamp" et la date/heure courante.

Bien sure qu'on peut comparer les champs en faisant des convert(), mais cela ne fait pas vraiment de sens puisque la conversion vers une date du champ timestamp donne une date complétement aléatoire!

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 12h34   #15
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 15
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : octobre 2006
Messages : 15
Points : 13
Points : 13
Bonjour,
en fait c'est plus compliqué et plus simple que cela. D'après mes recheres un timestamp est relatif au dataserveur. Son zéro correspond au premier démarage du dataserveur. Il est donc possible de les comparer entre données du même serveur, mais pas avec des timestamps du dataserveur d'a côté.

Maintenant le côté pratique : stocker un timestamp
Utilise une colonne de type binary(8)

Pour trouver les données insérées, modifiées depuis ton dernier passage :
il faut avoir conservé le timestamp de ce moment-là et le comparer aux timestamps présents dans ta table.
Romane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h58.


 
 
 
 
Partenaires

Hébergement Web