Ir al contenido principal

Formato para to_char a fechas en Oracle

Siempre he tenido problemas con estos formatos, así que he logrado resumir los formatos que se pueden usar para formatear un campo date en oracle, usando la función to_char en la siguiente tabla, en caso de necesitar que los nombres de dias y/o meses en español se tiene que ejecutar inicialmente:

ALTER SESSION SET NLS_DATE_LANGUAGE = 'SPANISH'

En caso de ejecutar desde un procedimiento almacenado:

EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_LANGUAGE = ''SPANISH''';


Parámetro Detalle
YEAR Año en letras, ejm: Dos mil nueve
YYYY Año cuatro dígitos
YYY Ultimos 3,2 o 1 dígitos del año
YY
Y
IYY Ultimos 3,2 o 1 dígitos del año ISO
IY
I
IYYY 4 dígitos del año, basado en el ISO estándar
Q Quarter del año (1, 2, 3, 4; ENE-MAR = 1).
MM Mes (01-12; ENE = 01).
MON Nombre abreviado del mes
MONTH Nombre del mes, completado con espacios en blanco, a nueve caractéres
RM número romano del mes (I-XII; ENE = I).
WW Semana del año (1-53) donde la semana 1 empieza el primer dia del año.
W Semana del mes (1-5) donde la semana 1 empieza con el primer dia del mes
IW Semana del año (1-52 or 1-53) basado en el estandar ISO.
D Dia de la semana (1-7).
DAY Nomber del dia.
DD Dia del mes (1-31).
DDD Dia del año (1-366).
DY Nombre abreviado del día.
J Dia Juliano; el numero de dias desde Enero 1, 4712 BC.
HH Hora del día (1-12).
HH12 Hora del día (1-12).
HH24 Hora del día (0-23).
MI Minuto (0-59).
SS Segundo (0-59).
SSSSS Segundos pasada la medianoche (0-86399).
FF Fracciones de segundos.

Para usar fracciones de segundo se debe usar to_timestamp en lugar de to_date, por ejemplo si tengo 30 jun 2021 19:32:23.115 debe ser to_timestamp('30 jun 2021 19:32:23.115','dd mon yyyy hh24:mi:ss.ff3')

Comentarios

Entradas populares de este blog

Leer Ñ en archivos desde Java

Siempre se me ha presentado este problema, cada vez que leo un archivo desde java, y este contiene caracteres como la Ñ, estos son tomado como símbolos raros: Voy a mostrar el código que ocasiona esta distorsión, el archivo "D:\temporal\prueba.txt", cuyo contenido es: PAÑALES DESCARTABLES ÚTILES DE LIMPIEZA VINO AÑEJO Y el código es el siguiente: import java.io.*; /** * * @author mzavaleta */ public class TestÑ { /** * @param args the command line arguments */ public static void main(String[] args) throws FileNotFoundException, IOException { // TODO code application logic here FileInputStream fis = new FileInputStream("D:/temporal/prueba.txt"); InputStreamReader is = new InputStreamReader(fis); BufferedReader bf = new BufferedReader(is); String linea; while ((linea = bf.readLine()) != null) { System.out.println(linea); } bf.close(); ...

Separador decimal en Oracle

Para poder cambiar el separador decimal en Oracle, se puede usar la siguiente sentencia, suponiendo que queremos usar el punto ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '. '; Para usarlo dentro de un procedimiento almacenado, se puede usar la siguiente sentencia: EXECUTE IMMEDIATE('ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ''. '' ') ;

Comparación de campos tipo NCHAR

Normalmente cuando se compara cadenas con campos del tipo NCHAR, se muestra el error: ORA-12704: character set mismatch O en español: ORA-12704: no coincide el juego de caracteres Para evitar este error se puede usar la función CSCONVERT cuya sintaxis es: CSCONVERT(cadena,'NCHAR_CS') Donde cadena es el valor que se quiere pasar a NCHAR. Veamos un ejemplo: Tenemos la tabla TABLA_NCHAR que tiene un solo campo tipo NCHAR: create table TABLA_NCHAR ( CAMPO_NCHAR NCHAR(25) ) Si intentamos hacer el siguiente query: select campo_nchar from tabla_nchar UNION SELECT 'TODOS LOS VALORES' FROM DUAL; select campo_nchar from tabla_nchar UNION SELECT 'TODOS LOS VALORES' FROM DUAL ORA-12704: character set mismatch Se mostrará el error indicado al inicio de este blog, pero si se usa la funcion el query funcionará correctamente: SQL> select campo_nchar from tabla_nchar 2 UNION 3 SELECT CSCONVERT('TODOS LOS VALORES','NCHAR_CS...