Problemas to_char(sysdate,’D’) misma sql rentorna cosas diferentes

En Oracle cuando ejecutas la consulta select to_char(sysdate,’D’) retorna el dia de la semana en la que esta la feche que le pasas.

El problema viene que depende de la sessión que hayas realizado para la conexion a oracle el valor puede ser uno o otro ya que en estados unidos el primer dia de la semana es el domingo y aqui en españa el primer dia es el lunes.

Aunque al final del to_char le pases el ‘NLS_DATE_LANGUAGE=SPANISH’ devolvera lo mismo ya que prevalece las variables de la sesión.

Dichas variables estan en la tabla nls_session_parameters.

La unica solucion es recoger los nombres que eso si que lo devuelve en los distintos idiomas pero tendremos que realizar un trim para realizar la comparación ya que al final de todo vienen espacios.

‘DILLUNS’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))
‘DIMARTS’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))
‘DIMECRES’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))
‘DIJOUS’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))
‘DIVENDRES’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))
‘DISSABTE’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))
‘DIUMENGE’ = trim (to_char(SYSDATE,’DAY’,’NLS_DATE_LANGUAGE=catalan’))

Deja una respuesta