Compartir vía


Funciones de hora, fecha e intervalo

En la tabla siguiente se enumeran las funciones de fecha y hora que se incluyen en el conjunto de funciones escalares odbc. Una aplicación puede determinar qué funciones de fecha y hora son compatibles con un controlador llamando a SQLGetInfo con un tipo de información de SQL_TIMEDATE_FUNCTIONS.

Los argumentos indicados como timestamp_exp pueden ser el nombre de una columna, el resultado de otra función escalar, o un escape odbc-time-time, ODBC-date- escape o ODBC-timestamp-escape, donde el tipo de datos subyacente podría representarse como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE o SQL_TYPE_TIMESTAMP.

Los argumentos que se indican como date_exp pueden ser el nombre de una columna, el resultado de otra función escalar o un escape ODBC-date- o ODBC-timestamp-escape, donde el tipo de datos subyacente se puede representar como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE o SQL_TYPE_TIMESTAMP.

Los argumentos indicados como time_exp pueden ser el nombre de una columna, el resultado de otra función escalar o un escape odbc-time-time o ODBC-timestamp-escape, donde el tipo de datos subyacente podría representarse como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME o SQL_TYPE_TIMESTAMP.

Las funciones escalares CURRENT_DATE, CURRENT_TIME y CURRENT_TIMESTAMP timedate se han agregado en ODBC 3.0 para alinearse con SQL-92.

Función Descripción
CURRENT_DATE( ) (ODBC 3.0) Devuelve la fecha actual.
CURRENT_TIME[( time-precision )] (ODBC 3.0) Devuelve la hora local actual. El argumento de precisión de tiempo determina la precisión de segundos del valor devuelto.
CURRENT_TIMESTAMP
[( timestamp-precision )] (ODBC 3.0)
Devuelve la fecha local actual y la hora local como un valor de marca de tiempo. El argumento timestamp-precision determina la precisión de segundos de la marca de tiempo devuelta.
CURDATE( ) (ODBC 1.0) Devuelve la fecha actual.
CURTIME( ) (ODBC 1.0) Devuelve la hora local actual.
DAYNAME( date_exp ) (ODBC 2.0) Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del día (por ejemplo, domingo a sábado o sol. a través de Sat. para un origen de datos que usa inglés o Sonntag a través de Samstag para un origen de datos que usa alemán) para la parte del día de date_exp.
DAYOFMONTH( date_exp ) (ODBC 1.0) Devuelve el día del mes en función del campo mes de date_exp como un valor entero en el intervalo de 1 a 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Devuelve el día de la semana en función del campo de la semana en date_exp como un valor entero en el intervalo de 1 a 7, donde 1 representa el domingo.
DAYOFYEAR( date_exp ) (ODBC 1.0) Devuelve el día del año en función del campo año de date_exp como un valor entero en el intervalo de 1 a 366.
EXTRACT( extract-field FROM extract-source ) (ODBC 3.0) Devuelve la parte del campo de extracción del origen de extracción. El argumento extract-source es una expresión datetime o interval. El argumento extract-field puede ser una de las siguientes palabras clave:

SEGUNDO MINUTO DE DÍA DEL MES DE AÑO

La precisión del valor devuelto está definida por la implementación. La escala es 0 a menos que se especifique SECOND, en cuyo caso la escala no es menor que la precisión de fracciones de segundos del campo de origen de extracción .
HOUR( time_exp ) (ODBC 1.0) Devuelve la hora basada en el campo de hora de time_exp como un valor entero en el intervalo de 0 a 23.
MINUTE( time_exp ) (ODBC 1.0) Devuelve el minuto basado en el campo minuto de time_exp como un valor entero en el intervalo de 0 a 59.
MONTH( date_exp ) (ODBC 1.0) Devuelve el mes basado en el campo mes de date_exp como un valor entero en el intervalo de 1 a 12.
MONTHNAME( date_exp ) (ODBC 2.0) Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del mes (por ejemplo, enero a diciembre o enero. hasta diciembre. para un origen de datos que usa inglés o Januar a través de Dezember para un origen de datos que usa alemán) para la parte del mes de date_exp.
NOW( ) (ODBC 1.0) Devuelve la fecha y hora actuales como un valor de marca de tiempo.
QUARTER( date_exp ) (ODBC 1.0) Devuelve el trimestre de date_exp como un valor entero en el intervalo de 1 a 4, donde 1 representa el 1 de enero al 31 de marzo.
SECOND( time_exp ) (ODBC 1.0) Devuelve el segundo basado en el segundo campo de time_exp como un valor entero en el intervalo de 0 a 59.
TIMESTAMPADD( interval, integer_exp, timestamp_exp ) (ODBC 2.0) Devuelve la marca de tiempo calculada agregando integer_exp intervalos de tipo a timestamp_exp. Los valores válidos del intervalo son las siguientes palabras clave:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

donde las fracciones de segundo se expresan en mil millones de segundos. Por ejemplo, la siguiente instrucción SQL devuelve el nombre de cada empleado y su fecha de aniversario de un año:

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

Si timestamp_exp es un valor de tiempo e intervalo especifica días, semanas, meses, trimestres o años, la parte de fecha de timestamp_exp se establece en la fecha actual antes de calcular la marca de tiempo resultante.

Si timestamp_exp es un valor de fecha e intervalo especifica fracciones de segundos, segundos, minutos o horas, la parte de tiempo de timestamp_exp se establece en 0 antes de calcular la marca de tiempo resultante.

Una aplicación determina qué intervalos admite un origen de datos mediante una llamada a SQLGetInfo con la opción SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF( interval, timestamp_exp1, timestamp_exp2 ) (ODBC 2.0) Devuelve el número entero de intervalos de intervalos de tipo por los que timestamp_exp2 es mayor que timestamp_exp1. Los valores válidos del intervalo son las siguientes palabras clave:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

donde las fracciones de segundo se expresan en mil millones de segundos. Por ejemplo, la siguiente instrucción SQL devuelve el nombre de cada empleado y el número de años que ha empleado:

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

Si cualquiera de las expresiones de marca de tiempo es un valor de tiempo e intervalo especifica días, semanas, meses, trimestres o años, la parte de fecha de esa marca de tiempo se establece en la fecha actual antes de calcular la diferencia entre las marcas de tiempo.

Si cualquiera de las expresiones de marca de tiempo es un valor de fecha e intervalo especifica fracciones de segundos, segundos, minutos o horas, la parte de tiempo de esa marca de tiempo se establece en 0 antes de calcular la diferencia entre las marcas de tiempo.

Una aplicación determina qué intervalos admite un origen de datos mediante una llamada a SQLGetInfo con la opción SQL_TIMEDATE_DIFF_INTERVALS.
WEEK( date_exp ) (ODBC 1.0) Devuelve la semana del año en función del campo de semana en date_exp como un valor entero en el intervalo de 1 a 53.
YEAR( date_exp ) (ODBC 1.0) Devuelve el año basado en el campo año de date_exp como un valor entero. El intervalo depende del origen de datos.