Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Campo datetime MySQL

Hola, buenas tardes:

Estoy teniendo problemas con el filtro aplicado al load siguiente:

LET v_ActualDate = Num(Today());

  LOAD fecha_timestamp;

  SQL SELECT * FROM TABLA

  WHERE fecha_timestamp >= $(v_ActualDate);

En la tabla de base de datos (TABLA) no existe ningún registro que cumpla el filtro, y sin embargo dicha consulta me está devolviendo todos los registros cuyo campo: fecha_timestamp no es nula ni vacía.

Alguien podría decirme cómo puedo construir el filtro de manera que se evaluara correctamente la condición?

Gracias de antemano.

Un saludo

1 Solution

Accepted Solutions
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Prueba esto

WHERE DATE(TUFECHA) >= CURRENT_DATE ()

... current date es una función SQL

View solution in original post

10 Replies
alex_millan
Creator III
Creator III

Hola,

yo al declarar evito la parte de timestamp así para que coja sólo el día:

LET v_ActualDate = Floor(Today());

Entendiendo que el campo fecha_timestamp existe dentro de la tabla SQL, teóricamente debería cargar todo los correspondiente al día con la instrucción:

LOAD fecha_timestamp;

SQL SELECT * FROM TABLA WHERE fecha_timestamp >= $(v_ActualDate);

Un saludo

Not applicable
Author

Hola Alex:

He cambiado la definición de la variable por lo que propones y, sigo obteniendo todos los registros de la tabla, en lugar de obtener sólo los registros que satisfacen la condición fecha_timestamp >= $(v_ActualDate)


Y de hecho cuando defino la variable como:


LET v_ActualDate = Num(Now());


Se produce la siguiente excepción:


SQL##f - SqlState: 37000, ErrorCode: 1064, ErrorMsg: [MySQL][ODBC 5.1 Driver][mysqld-5.5.28]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '568136574' at line 2

SQL SELECT * FROM TABLA

  WHERE fecha_timestamp >= 42058,568136574

Gracias por contestar.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Prueba esto

WHERE DATE(TUFECHA) >= CURRENT_DATE ()

... current date es una función SQL

alex_millan
Creator III
Creator III

Quizás el problema es que al utilizar la función floor se pierde la parte horaria.

Prueba a definir la variable con la función daystart:

LET v_ActualDate = DayStart(Today());

Si no funciona, quizás podrías enviar un ejemplo con algunos datos cargados para revisar donde puedes tener el problema.

Un saludo

Not applicable
Author

Hola Joaquin:

Estoy si que funciona!

Muchas gracias

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

De nada

alex_millan
Creator III
Creator III

Hola Joaquín,

para aprovechar y entenderlo yo también,

¿entonces es como si le dijeras que te cargue todos los elementos posteriores al momento en que haces la recarga?

O sea defines el momento actual en Qlik al establecer la variable y en SQL al hacer el where, ¿verdad?

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Efectivamente Alex.

Si el la BBDD no hay fechas posteriores al 'hoy' con el igual sería suficiente.

Si quieres recuperar valores anteriore usa menor o igual

alex_millan
Creator III
Creator III

Gracias Joaquín.

Un saludo