Problema:
Desea obtener la fecha actual (sin la hora) en Oracle.
Solución 1 (si no te importan los ceros como la hora):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Por ejemplo, si ejecutara esta consulta el 16 de junio de 2021, la tabla de resultados se vería así:
fecha_actual |
---|
2021-06-16T00:00:00Z |
Discusión:
Oracle no tiene un tipo de datos que almacene solo la fecha sin la hora. Pero si no le importan los ceros en lugar de la hora, simplemente puede almacenar una fecha en un DATE
tipo de datos (que almacena tanto la fecha como la hora en Oracle). Para obtener la fecha y hora actuales como DATE
valor, simplemente puede usar CURRENT_DATE
. Para deshacerse de la hora (y tener ceros en su lugar), debe truncar la fecha:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Solución 2 (si desea solo la fecha y no ceros en lugar de la hora):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Por ejemplo, si ejecutara esta consulta el 16 de junio de 2021, la tabla de resultados se vería así:
fecha_actual |
---|
2021-06-16 |
Discusión:
Para obtener un texto de VARCHAR2
tipo que almacena una fecha, puede usar el TO_CHAR()
función en Oracle. Debe especificar la marca de fecha/hora que se convertirá como primer argumento y en el formato en el que desea almacenar la fecha como segundo argumento.
Como desea la fecha actual, el primer argumento es CURRENT_DATE
. El segundo argumento es su elección. Por ejemplo, 'yyyy-MM-dd'
significa 'año-mes-día', donde el mes es numérico en lugar de texto. La siguiente tabla presenta algunos formatos de fecha de ejemplo y la salida respectiva para la fecha 16 de junio de 2021.
formato de fecha | resultado |
---|---|
'AAAA-MM-DD' | 2021-06-16 |
'AAAA/MM/DD' | 2021/06/16 |
'AAAA MM DD' | 2021 06 16 |
'DD-LUN-AAAA' | 16-JUN-2021 |
'DD-LUN-AA' | 16-JUN-21 |
'FMMonth DD, AAAA' | 16 de junio de 2021 |
Puede leer más sobre los formatos de fecha aquí.