smart - Identificador no válido en Oracle al seleccionar la marca de tiempo actual
smart contracts ethereum (2)
tratar
select to_date(''08/07/2015 '' || to_char(sysdate,''hh24:mi:ss''),''dd/mm/yyyy hh24:mi:ss'')
from dual
La siguiente consulta funcionaba en DB2. Sin embargo, cuando intento esto en Oracle, devuelve un error: "identificador inválido". Aquí está mi declaración:
SELECT TO_DATE(20150709||'' ''||TIME(CURRENT_TIMESTAMP), ''YYYYMMDD HH24MISS'') FROM DUAL
¿Cómo puedo hacer que funcione en Oracle?
TIME
no es una función incorporada válida en Oracle. Necesita usar TO_CHAR
para extraer la porción de tiempo como una cadena o usar algún otro mecanismo para agregar en el componente de tiempo.
SELECT TO_DATE( 20150709||'' ''||TO_CHAR(CURRENT_TIMESTAMP, ''HH24MISS'')
, ''YYYYMMDD HH24MISS'')
FROM DUAL;
Aquí hay un método alternativo que usa la aritmética de fechas:
SELECT TO_DATE(20150709, ''YYYYMMDD'')
+ (CURRENT_TIMESTAMP - TRUNC(CURRENT_TIMESTAMP))
FROM DUAL;
Al restar el CURRENT_TIMESTAMP
truncado de una marca de tiempo no truncada, obtiene el tipo de datos INTERVAL
que puede agregarse o restarse de fechas y marcas de tiempo.