sql >> Base de Datos >  >> RDS >> Oracle

Cómo cambiar el formato de fecha en la base de datos Oracle

A menudo necesitamos cambiar el formato de fecha durante la verificación. Aquí hay algunas formas que puede usar para cambiar el formato de fecha en la base de datos Oracle

Formato de fecha predeterminado de Oracle

El formato de fecha predeterminado en Oracle está controlado por el valor del parámetro NLS_DATE_FORMAT.

La siguiente consulta se puede utilizar para encontrar el valor actual del parámetro NLS_DATE_FORMAT

SELECT
  value
FROM
  V$NLS_PARAMETERS
WHERE
  parameter = 'NLS_DATE_FORMAT';

Cómo cambiar el formato de toda la sesión

Podemos cambiar el parámetro en la sesión y elegir el formato que queramos para la fecha de Oracle. Aquí está el sql que se puede usar para hacer en la sesión

ALTER SESSION SET NLS_DATE_FORMAT = '[date_format]';
MM  Numeric month (e.g., 07)
MON     Abbreviated month name (e.g., JUL)
MONTH   Full month name (e.g., JULY)
DD  Day of month (e.g., 24)
DY  Abbreviated name of day (e.g., FRI)
YYYY    4-digit year (e.g., 1998)
YY  Last 2 digits of the year (e.g., 98)
RR  Like YY, but the two digits are ``rounded'' to a year in the range 1950 to 2049. Thus, 06 is considered 2006 instead of 1906
AM (or PM)  Meridian indicator
HH  Hour of day (1-12)
HH24    Hour of day (0-23)
MI  Minute (0-59)
SS  Second (0-59)

Ejemplo

alter session set nls_date_format = 'dd-mon-yyyy hh24:mi:ss';

Ahora, sea cual sea la consulta que ejecute, la columna de fecha se formateará según el formato de fecha anterior

Example
select sysdate from dual;

Cómo cambiar el formato de fecha usando la función to_char

Es posible que deseemos tener un formato de fecha diferente para las diferentes consultas de SQL. En ese caso, puede planear usar la función de fila única de Oracle para la función_char y puede convertir la columna de datos de Oracle al formato que desee

Example
select to_char(sysdate, 'dd-mon-yyyy hh24:mi:ss')  from dual; 
select to_char(sysdate, 'dd-mon-yyyy')  from dual;  

Cómo cambiar el formato de fecha usando la función to_date

Es posible que deseemos cambiar las cadenas al formato de fecha para comparar, para almacenarlas como la fecha en la tabla de Oracle. En este caso, puede usar la función to_date de Oracle

 Example
select to_date('11-JAN-2019 13:12:12', 'dd-mon-yyyy hh24:mi:ss')  from dual; 
select to_date( '11-JAN-2019', 'dd-mon-yyyy')  from dual;   

Lo importante a tener en cuenta:la cadena se convierte en una fecha y la fecha se devuelve con el formato de fecha predeterminado en la declaración de selección. Si está utilizando la función to_date para almacenar cadenas como la fecha en la columna de fecha, eso se almacenará solo como fecha. Ahora, cuando seleccione esa columna, la fecha se mostrará en el formato de fecha predeterminado de Oracle establecido en la sesión.

Cómo formatear la fecha para mostrar el día, la semana, los meses, etc.

 Day of Week
 SQL> select to_char(sysdate,'D') col from dual; 
 col
----
 2

 Name of WeekDay
 SQL> select to_char(sysdate,'DAY') col from dual;
 col
---
MONDAY
 
Abbreviated name of day
 SQL> select to_char(sysdate,'DY') from dual;
 col
----
 MON
 
Day of Month
 SQL> select to_char(sysdate,'DD') from dual;
 col
----
 30
 
Abbreviated name of month
 SQL> select to_char(sysdate,'MON') from dual;
 col
----
 NOV
 
Name of Month
 SQL> select to_char(sysdate,'MONTH') from dual;
 col
-----
NOVEMBER

Day of Year
SQL> select to_char(sysdate,'DDD') from dual;
 col
----
 334
 
Week of the year
SQL> select to_char(sysdate,'IW') from dual;
 col
----
 05

Week of Month
 SQL> select to_char(sysdate,'W') from dual;
 col
-----
 5

Month in Numbers
SQL> select to_char(sysdate,'MM') from dual;
 col
----
 11

Year in Numbers
SQL> select to_char(sysdate,'YYYY') from dual;
 col
----
 2019
 
Year in words
SQL> select to_char(sysdate,'YEAR') from dual;
col
---
TWENTY NINE

Hour in 0-12 format
SQL> select to_char(sysdate,'HH') from dual'
col
----
08

Hour in 0-24 format
SQL> select to_char(sysdate,'HH24') from dual;
col
---
 12

Minutes
 SQL> select to_char(sysdate,'MI') from dual;
 col
----
 45
 
Seconds
 SQL> select to_char(sysdate,'SS') from dual;
 col
----
 45
 

Espero que te gusten estos sencillos pasos sobre cómo cambiar el formato de fecha en la base de datos de Oracle. Puede haber muchos ejemplos en los que se puede usar esto. Acabo de dar algunos ejemplos simples para demostrar la funcionalidad

Leer también
Funciones de fecha de Oracle: Esta publicación cubre funciones de fecha de Oracle, diferencia de fecha de Oracle en años, diferencia de fecha de Oracle en días, diferencia de fecha de Oracle en meses.
Función NULLIF en Oracle:función NULLIF en Oracle compara dos valores y devuelva nulo si los valores son iguales, de lo contrario, devuelva el primer valor. No puede especificar el NULL literal en los valores base de datos de Oracle. La actualización se puede ejecutar de varias maneras
Función de fusión en Oracle:la función de fusión en Oracle devolverá la primera expresión si no es nula; de lo contrario, fusionará el resto de la expresión.
cómo obtener metadatos de una tabla en Oracle:consulte cómo obtener una definición de tabla en Oracle, mostrar definición de índice de Oracle, obtener ddl de una vista materializada en Oracle, obtener la consulta de una vista en Oracle
http://infolab.stanford .edu/~ullman/fcdb/oracle/or-time.html