Je voudrais savoir si la conversion d'un TimeStamp vers un varchar est possible et si oui que est la methode à utiliser
Je voudrais savoir si la conversion d'un TimeStamp vers un varchar est possible et si oui que est la methode à utiliser
Oui c'est possible avec l'opérateur CAST
Pour le vérifier tres vite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select Cast(MonTimeStamp as Varchar(24)) from Matable;
Résulat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select cast(cast('now' as timestamp) as varchar(24)) from rdb$Database;
2004-01-07 14:50:38.0000
Merci pour ta reponse mais j'appelle cque tu m'as donnes dans une procedure stockée
et je reçois comme messege d'erreur
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
fmCompile.quCompile:
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
![]()
![]()
![]()
A premiere vue il y a quelques incohérences...
Je ne suis pas encore bien reveillé mais voici ce qui me saute aux yeux :
Que fait ce do begin ici ??
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
tu as déclaré vdate en timestamp donc il devrait y avoir :
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 ;
Ensuite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select cast('now' as timestamp) from rdb$database into :vdate ;
vParentDisplayOrder est de type Varchar(750) et vdate timestamp donc les additionner avec un +, je ne suis pas certain que ca fonctionne....
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
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
Merci pour tes reponses explicite![]()
Partager