Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Duda entre tipos de datos en SQL

Buenos días,

estoy desarrollando un script en el que se puedan hacer recargas parciales de una base de datos.

Ya lo he desarrollado otras veces por lo que tengo clara la dinámica de funcionamiento, sin embargo en este caso estoy teniendo errores con el tipo de datos SQL. La única pega es que las veces que lo he utilizado, la variable FECHA sobre la que trabajaba era de tipo datetime y en este caso la variable FECHA es de tipo date.

En primer caso leo la fecha máxima de la base de datos:

Lectura del valor más reciente de la base de datos.

Fecha_maxima_tmp:

LOAD Max(FECHA) as FECHA

FROM METEO_HCO_VALORES.qvd (qvd);

Y me lo guardo en una variable quitando 7 días(esto es un truco que tuve que inventar ya que los datos de los últimos 7 días pueden ir variando):

Variable vMaxFecha - Caso 1
LET vMaxFecha = ((Round(Peek('FECHA',0,'Fecha_maxima_tmp')))-7);

Consulta a la base de datos de los datos de esos últimos 7 días:

Consulta - Caso 1

METEO_HCO_VALORES:

LOAD

    FECHA as FECHA,

    Year(FECHA) as año,

    Month(FECHA) as mes,

    Day(FECHA) as dia,

    VALOR;

SQL SELECT *

FROM AREAMA."AMA_METEO_HCO_VALORES"

WHERE FECHA > ($(vMaxFecha));

Aquí ya me encuentro el siguiente error:

Captura de pantalla (11).png

Al ver ese error se me ocurre cambiar la Variable vMaxFecha:

Variable vMaxFecha - Caso 2
LET vMaxFecha = date((Round(Peek('FECHA',0,'Fecha_maxima_tmp')))-7);

y dejar la consulta igual que en el Caso 1 pero me encuentro con el mismo error.

Al ver ese error busco otra solución y es dejando la variable vMaxFecha como el Caso 1 y cambiando la consulta a :

Consulta - Caso 3

METEO_HCO_VALORES:

LOAD

    FECHA as FECHA,

    Year(FECHA) as año,

    Month(FECHA) as mes,

    Day(FECHA) as dia,

    VALOR;

SQL SELECT *

FROM AREAMA."AMA_METEO_HCO_VALORES"

WHERE FECHA > to_date($(vMaxFecha));

Me encuentro el error:

Captura de pantalla (13).png

Y ya por último pruebo el script como la variable vMaxFecha como el caso 2 y la consulta como el caso 3 y me encuentro el error:

Captura de pantalla (14).png

Quería saber si alguien podría ayudarme.

Gracias!

14 Replies
Not applicable
Author

Hola Joaquín,

he utilizado la consulta que ha puesto más arriba Jordi y ya funciona.

Sabes si habría alguna forma de comparar la FECHA con una variable en vez de poner '17/08/2016'?

Gracias

sorrakis01
Specialist
Specialist

Hola,

Si solo usas la variable para esa query lo sencillo sería que concatenaras las comillas simples para la variable. Es decir:

cuando evaluas la variable pones vMaxFecha = "'" & Tu calculo en formato dd/mm/yyyy & "'"

de esta manera cuando hagas la query solo hace falta que pongas

WHERE FECHA > $(vMaxFecha).


Funcionar te va a funcionar.


Saludos,

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Claro, te lo puse en el primer mensaje


LET vFechaMax = chr(39)& Date(Today(), 'YYYY/MM/DD') & chr(39);


WHERE Date(t.RECORDDATE) <= $(vFechaMax)

El chr(39)  sirve para convertir el contenido en alfanumérico.

Not applicable
Author

La respuesta correcta gracias a sorrakis01‌y a joaquinlr‌‌es esta:


LET vFechaMax = chr(39)& Date(Today(), 'YYYY/MM/DD') & chr(39);


SELECT *

               FROM Tabla

              Where FECHA > $(vFechaMax);


JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Perfecto, marca como útiles las respuestas que te hayan ayudado