Qlik Community

Groupe des Utilisateurs Francophones

cancel
Showing results for 
Search instead for 
Did you mean: 
nathroche
Contributor III
Contributor III

Date et heure

Bonjour,

j'ai deux champs date que j'aimerai concaténer:

-un champ avec la date (ex: 16/01/2017 00:00:00)

-un champ date qui est en fait l'heure (ex: 01/01/2017 14:43:05)

J'aimerai concaténer les deux pour pouvoir faire des calculs dessus par la suite, notamment prendre le min.

Pour l'instant, j'ai écrit:

(concat(to_char(CORTEXTE.MODALITE.DD,'DD/MM/YYYY'),concat(' ',to_char(CORTEXTE.MODALITE.HD,'HH24:MI'))))

Mais quand j'en prends le min(), il me sélectionne selon le premier chiffre de la date et non pas selon la date en elle-même. Cette variable a l'air d'être du texte..

Si vous avez une idée.

Merci!

Nathalie

1 Solution

Accepted Solutions
sfatoux72
Partner
Partner

‌tu n’as pas mis le min sur ta 2eme expression :

SELECT

CORTEXTE.PATIENTS.P4 as "ClePatient",

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM,

/*CORTEXTE.MODALITE.DD,

CORTEXTE.MODALITE.HD,

to_char(CORTEXTE.MODALITE.HD,'HH24:MI:SS') as HeureDD,*/

Min(TO_DATE(to_char(CORTEXTE.MODALITE.DD,'DD/MM/YYYY')||' '||to_char(CORTEXTE.MODALITE.HD,'HH24:MI'), 'DD/MM/YYYY HH24:MI')) as "MinDD",

Min(to_char(CORTEXTE.MODALITE.DD,'YYYY')) as "MinAnDD"

FROM

CORTEXTE.MODALITE LEFT JOIN

CORTEXTE.PATIENTS ON CORTEXTE.MODALITE.E4 = CORTEXTE.PATIENTS.P4

GROUP BY

CORTEXTE.PATIENTS.P4,

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM;

View solution in original post

7 Replies
brunobertels
Specialist III
Specialist III

Bonjour

Essaye d'inclure ta mesure dans avec Timestamp() ou Timestamp#()

timestamp(

(concat(to_char(CORTEXTE.MODALITE.DD,'DD/MM/YYYY'),concat(' ',to_char(CORTEXTE.MODALITE.HD,'HH24:MI'))))

)


ou

Timestamp#(

(concat(to_char(CORTEXTE.MODALITE.DD,'DD/MM/YYYY'),concat(' ',to_char(CORTEXTE.MODALITE.HD,'HH24:MI'))))

)


puis retester ton min()

sfatoux72
Partner
Partner

‌si tes champs sont déjà des dates (QlikView), tu peux simplement utiliser ceci :

TimeFormat(Floor(CORTEXTE.MODALITE.DD) + Frac(CORTEXTE.MODALITE.HD))

Si c’est du texte :

TimeFormat(TimeFormat#(Left(CORTEXTE.MODALITE.DD, 11)  & Right(CORTEXTE.MODALITE.HD, 8), 'DD/MM/YYYY hh:mm:ss'))

nathroche
Contributor III
Contributor III
Author

Bonsoir,

Merci pour vos réponses, mais j'ai toujours un message d'erreur.

Je me demande si le problème ne vient pas plutôt du fait que j'ai écris un script en SQL:

T1:

SELECT

CORTEXTE.PATIENTS.P4 as "ClePatient",

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM,

CORTEXTE.MODALITE.DD,

CORTEXTE.MODALITE.HD,

to_char(CORTEXTE.MODALITE.HD,'HH24:MI:SS') as HeureDD,

TimeFormat(TimeFormat#(Left(CORTEXTE.MODALITE.DD, 11) & Right(CORTEXTE.MODALITE.HD, 8), 'DD/MM/YYYY hh:mm:ss')) as "MinDD",

/*Date(CORTEXTE.MODALITE.HD,'hh:mm') as MinDD,*/

(to_char(CORTEXTE.MODALITE.DD,'YYYY')) as "MinAnDD"

FROM

CORTEXTE.MODALITE LEFT JOIN

CORTEXTE.PATIENTS ON CORTEXTE.MODALITE.E4 = CORTEXTE.PATIENTS.P4;

/*GROUP BY

CORTEXTE.PATIENTS.P4,

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM;*/

sfatoux72
Partner
Partner

‌Si tu nous dit pas tout 😉

Ce sont des expressions Qlik que je t’ai donné, essaye comme ceci :

T1:

LOAD

  *,

  TimeFormat(TimeFormat#(Left(CORTEXTE.MODALITE.DD, 11)  & Right(CORTEXTE.MODALITE.HD, 8), 'DD/MM/YYYY hh:mm:ss')) As MinDD;

SELECT

CORTEXTE.PATIENTS.P4 as "ClePatient",

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM,

CORTEXTE.MODALITE.DD,

CORTEXTE.MODALITE.HD,

to_char(CORTEXTE.MODALITE.HD,'HH24:MI:SS') as HeureDD,

/*TimeFormat(TimeFormat#(Left(CORTEXTE.MODALITE.DD, 11) & Right(CORTEXTE.MODALITE.HD, 8), 'DD/MM/YYYY hh:mm:ss')) as "MinDD",

Date(CORTEXTE.MODALITE.HD,'hh:mm') as MinDD,*/

(to_char(CORTEXTE.MODALITE.DD,'YYYY')) as "MinAnDD"

FROM

CORTEXTE.MODALITE LEFT JOIN

CORTEXTE.PATIENTS ON CORTEXTE.MODALITE.E4 = CORTEXTE.PATIENTS.P4;

/*GROUP BY

CORTEXTE.PATIENTS.P4,

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM;*/

nathroche
Contributor III
Contributor III
Author

Bonsoir,

J'ai trouvé l'expression pour concaténer la date et l'heure.

Mais après quand je prends le min, le code ne marche plus... c'est pas encore gagné!

SELECT

CORTEXTE.PATIENTS.P4 as "ClePatient",

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM,

/*CORTEXTE.MODALITE.DD,

CORTEXTE.MODALITE.HD,

to_char(CORTEXTE.MODALITE.HD,'HH24:MI:SS') as HeureDD,*/

Min(TO_DATE(to_char(CORTEXTE.MODALITE.DD,'DD/MM/YYYY')||' '||to_char(CORTEXTE.MODALITE.HD,'HH24:MI'), 'DD/MM/YYYY HH24:MI')) as "MinDD",

(to_char(CORTEXTE.MODALITE.DD,'YYYY')) as "MinAnDD"

FROM

CORTEXTE.MODALITE LEFT JOIN

CORTEXTE.PATIENTS ON CORTEXTE.MODALITE.E4 = CORTEXTE.PATIENTS.P4

GROUP BY

CORTEXTE.PATIENTS.P4,

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM;

sfatoux72
Partner
Partner

‌tu n’as pas mis le min sur ta 2eme expression :

SELECT

CORTEXTE.PATIENTS.P4 as "ClePatient",

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM,

/*CORTEXTE.MODALITE.DD,

CORTEXTE.MODALITE.HD,

to_char(CORTEXTE.MODALITE.HD,'HH24:MI:SS') as HeureDD,*/

Min(TO_DATE(to_char(CORTEXTE.MODALITE.DD,'DD/MM/YYYY')||' '||to_char(CORTEXTE.MODALITE.HD,'HH24:MI'), 'DD/MM/YYYY HH24:MI')) as "MinDD",

Min(to_char(CORTEXTE.MODALITE.DD,'YYYY')) as "MinAnDD"

FROM

CORTEXTE.MODALITE LEFT JOIN

CORTEXTE.PATIENTS ON CORTEXTE.MODALITE.E4 = CORTEXTE.PATIENTS.P4

GROUP BY

CORTEXTE.PATIENTS.P4,

CORTEXTE.PATIENTS.IPP_ADMIN,

CORTEXTE.PATIENTS.NOMPRENOM;

nathroche
Contributor III
Contributor III
Author

Mais oui, c'est vrai, et là ça marche!

🙂

Merci!