Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
CastelGreen
Contributor
Contributor

TALEND + SQL SERVER : problème de syntaxe pour accéder au contenu d'une variable globale

Bonjour,

J'essaye de récupérer le contenu d'une variable globale de type date dans une requête dans tDBInput mais je me heurte à un problème de syntaxe que je n'arrive à solutionner.

CastelGreen_1-1734270385253.png

 

 

Voici ma requete : 

"SELECT DATE,UPPER(LEFT(LIB_SEMAINE,2)) AS CAL_LIB_JRS_SEMAINE FROM CALENDRIER
WHERE DATE >= ' "+ (Date)globalMap.get("EXPL_DAT") +" ' and DATE < DATEADD(Day, 8, ' "+ (Date)globalMap.get("EXPL_DAT") + " ')"

 

Merci de votre aide

 

 

Labels (3)
1 Solution

Accepted Solutions
Dave_Simo
Contributor III
Contributor III

Bonjour ,

Tente ta requête comme ceci :

Soit 1)

"SELECT DATE,UPPER(LEFT(LIB_SEMAINE,2)) AS CAL_LIB_JRS_SEMAINE FROM CALENDRIER
WHERE DATE >= ' "+ TalendDate.formatDate("yyyy-MM-dd", (Date)globalMap.get("EXPL_DAT")) +" ' and DATE < DATEADD(Day, 8, ' "+ TalendDate.formatDate("yyyy-MM-dd", (Date)globalMap.get("EXPL_DAT")) + " ')"

Soit 2)

Mettre en variable de contexte et l'utiliser dans ta requête ainsi TalendDate.formatDate(“example_date_format”, context.EXPL_DAT)

Dave_Simo_0-1734347482717.png

Cordialement

 

View solution in original post

6 Replies
CastelGreen
Contributor
Contributor
Author

Je ne sais pas pourquoi mon WHERE dans mon post est passé à où ! mais dans ma requête c'est bien un WHERE

Dave_Simo
Contributor III
Contributor III

Bonjour ,

Tente ta requête comme ceci :

Soit 1)

"SELECT DATE,UPPER(LEFT(LIB_SEMAINE,2)) AS CAL_LIB_JRS_SEMAINE FROM CALENDRIER
WHERE DATE >= ' "+ TalendDate.formatDate("yyyy-MM-dd", (Date)globalMap.get("EXPL_DAT")) +" ' and DATE < DATEADD(Day, 8, ' "+ TalendDate.formatDate("yyyy-MM-dd", (Date)globalMap.get("EXPL_DAT")) + " ')"

Soit 2)

Mettre en variable de contexte et l'utiliser dans ta requête ainsi TalendDate.formatDate(“example_date_format”, context.EXPL_DAT)

Dave_Simo_0-1734347482717.png

Cordialement

 

CastelGreen
Contributor
Contributor
Author

Bonjour Dave_Simo, merci pour ta proposition, je vais tester ta solution 🙂

fcolagiacomo
Contributor III
Contributor III

Let suppose you have to execute the query below:

SELECT DATE,UPPER(LEFT(LIB_SEMAINE,2)) AS CAL_LIB_JRS_SEMAINE FROM CALENDRIER
WHERE DATE >= '2024-12-13' and DATE < DATEADD(Day, 8, '2024-12-13')

You can do it:

1) Using Java code: globalMap.put("EXPL_DAT", "2024-12-13");

2) Using tSetGlobalVar: "EXPL_DAT", "2024-12-13"

Then you have to use in query parameter of tMSSQLInput component:

"SELECT DATE,UPPER(LEFT(LIB_SEMAINE,2)) AS CAL_LIB_JRS_SEMAINE FROM CALENDRIER
WHERE DATE >= '" + (String)globalMap.get("EXPL_DAT") + "' and DATE < DATEADD(Day, 8, '" + (String)globalMap.get("EXPL_DAT") + "')"

Otherwise you can put in globalMap a date data type, in this case you will have the Dave_Simo's case. 

 

If you want to use a context variable you will have two options:

- define a String data type: 

"SELECT DATE,UPPER(LEFT(LIB_SEMAINE,2)) AS CAL_LIB_JRS_SEMAINE FROM CALENDRIER
WHERE DATE >= '" + context.EXPL_DAT + "' and DATE < DATEADD(Day, 8, '" + context.EXPL_DAT + "')"

- define a Date data type is analogue applying Dave_Simo's case. 

CastelGreen
Contributor
Contributor
Author

Bonjour Dave_Simo, 

Ta proposition fonctionne très bien.

Merci bcp 🙂

CastelGreen
Contributor
Contributor
Author

Bonjour Fcolagiacomo, merci pour ta proposition, mon problème est résolu avec TalendDate.formatDate("yyyy-MM-dd", (Date)VariableGlobal))

 

Bonne journée