SQL - Hacer que una consulta quede en formato ansi, para poder ser ejecutada desde cualquier motor

   
Vista:
Imágen de perfil de Jonathan

Hacer que una consulta quede en formato ansi, para poder ser ejecutada desde cualquier motor

Publicado por Jonathan (6 intervenciones) el 21/05/2014 21:11:41
Buen día,

actualmente tengo la siguiente consulta que corre solo en sql server por el convert que se utiliza en ella, la pregunta radica si alguien conoce la forma de estandarizar esta consulta con el fin de que pueda ser ejecutada en cualquier motor sin presentar fallos.

1
2
3
4
5
6
7
8
9
SELECT MAX(HOR_RELO)HOR_SAL, MIN(HOR_RELO)HOR_ENT, CONVERT(date, FEC_SIST, 110) as FEC_SIST,
       COD_EMPL, RMT_SROF
  FROM NM_CTRRE
 WHERE TIP_MOVI IN ('E' , 'S')
   AND COD_EMPL = 79545352
   AND FEC_SIST >= '20100101'
   AND FEC_SIST <=  '20140521'
GROUP BY CONVERT(date, FEC_SIST, 110), COD_EMPL, RMT_SROF
ORDER BY FEC_SIST

Agradezco la colaboración que me puedan prestar,

Cordial saludo,

Jonathan Velosa R.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Hacer que una consulta quede en formato ansi, para poder ser ejecutada desde cualquier motor

Publicado por leonardo_josue (880 intervenciones) el 21/05/2014 22:24:42
Hola Jonathan:

Lamentablemente lo que pides es harto difícil, sino que casi imposible... La mayoría de los DBMS tienen sus propia forma para el manejo de campos tipo FECHA, por lo tanto, buscar un estándar para todos, no aplica.

Por un lado, la conversión que haces en el SELECT de arriba, a final de cuentas sólo sirve para visualizar la fecha en un formato determinado, (en tu caso con el formato de USA mm-dd-yyyy)

Lo ideal sería que manejaras las fechas en formato ANSI, es decir, yyyy-mm-dd, que es el estándar que utilizan la mayoría de los DBMS...

Obviamente esto igual y no te sirve si es que necesitas mostrar la información como mencionas...

Un problema más grave está en el GROUP BY, ya que aquí el valor no es meramente "visual", sino que impacta directamente en la agrupación... Si en tu campo estás almacenando la fecha en formato largo (es decir, tomando también la hora), entonces es necesario hacer el ajuste para extraer sólo la parte de la fecha, sin considerar la hora.

En otras palabras, lo que quieres hacer no se puede hacer.

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jonathan

Hacer que una consulta quede en formato ansi, para poder ser ejecutada desde cualquier motor

Publicado por Jonathan (6 intervenciones) el 22/05/2014 16:25:39
Hola leonardo,

Si es que el real problema es el campo que contiene la fecha ya que esta con horas y minutos lo cual hace imposible realizar la comparacion porque de la subconsulta trae la misma fecha con diferente hora, ho habria forma de agrupar solo la fecha sin tener en cuenta la hora y que esto funcione para todos os motores???


Saludos,

Jonathan Velosa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Hacer que una consulta quede en formato ansi, para poder ser ejecutada desde cualquier motor

Publicado por Isaias (691 intervenciones) el 22/05/2014 18:34:05
Utilice el formato ANSI

YYYYMMDD HH:MM:SS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar