Partilhar via


Funções de hora, data e intervalo

A tabela a seguir lista as funções de data e hora incluídas no conjunto de funções escalares ODBC. Um aplicativo pode determinar quais funções de data e hora são suportadas por um driver chamando SQLGetInfo com um tipo de informação de SQL_TIMEDATE_FUNCTIONS.

Os argumentos indicados como timestamp_exp podem ser o nome de uma coluna, o resultado de outra função escalar ou umde fuga de tempo ODBC , de escape de data ODBC, ou de escape de carimbo de data/hora ODBC, onde o tipo de dados subjacente pode ser representado como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE ou SQL_TYPE_TIMESTAMP.

Os argumentos indicados como date_exp podem ser o nome de uma coluna, o resultado de outra função escalar ou um de escape de data ODBC ou de escape de carimbo de data/hora ODBC, onde o tipo de dados subjacente pode ser representado como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE ou SQL_TYPE_TIMESTAMP.

Os argumentos indicados como time_exp podem ser o nome de uma coluna, o resultado de outra função escalar ou um de fuga de tempo ODBC ou ODBC-timestamp-escape , onde o tipo de dados subjacente pode ser representado como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME ou SQL_TYPE_TIMESTAMP.

As funções escalares CURRENT_DATE, CURRENT_TIME e CURRENT_TIMESTAMP timedate foram adicionadas no ODBC 3.0 para alinhar com o SQL-92.

Função Descrição
CURRENT_DATE( ) (ODBC 3.0) Devolve a data atual.
CURRENT_TIME[(time-precision)] (ODBC 3.0) Devolve a hora local atual. O argumento time-precision determina a precisão de segundos do valor retornado.
CURRENT_TIMESTAMP
[(timestamp-precision)] (ODBC 3.0)
Retorna a data e a hora locais atuais como um valor de carimbo de data/hora. O argumento de precisão de carimbo de data/hora determina a precisão de segundos do carimbo de data/hora retornado.
CURDATE( ) (ODBC 1.0) Devolve a data atual.
CURTIME( ) (ODBC 1.0) Devolve a hora local atual.
DAYNAME(date_exp) (ODBC 2.0) Retorna uma cadeia de caracteres contendo o nome específico da fonte de dados do dia (por exemplo, domingo a sábado ou dom. a sábado, para uma fonte de dados que usa inglês, ou Sonntag a Samstag, para uma fonte de dados que usa alemão) para a parte do dia de date_exp.
DIADOMÊS(date_exp) (ODBC 1.0) Devolve o dia do mês com base no campo de mês em date_exp como um valor inteiro no intervalo de 1 a 31.
DAYOFWEEK(date_exp) (ODBC 1.0) Devolve o dia da semana com base no campo da semana em date_exp como um valor inteiro no intervalo de 1 a 7, em que 1 representa o domingo.
DAYOFYEAR(date_exp) (ODBC 1.0) Devolve o dia do ano com base no campo de ano em date_exp como um valor inteiro no intervalo de 1-366.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) Devolve a parte do campo de extração doextração-fonte . O argumento extract-source é uma expressão datetime ou interval. O argumento de campo de extração pode ser uma das seguintes palavras-chave:

ANO MÊS DIA HORA MINUTO SEGUNDO

A precisão do valor retornado é definida pela implementação. A escala é 0, a menos que SECOND seja especificado, caso em que a escala não é inferior à precisão de segundos fracionários do campo extração-fonte.
HORA(time_exp) (ODBC 1.0) Devolve a hora com base no campo de horas em time_exp como um valor inteiro no intervalo de 0 a 23.
MINUTO(time_exp) (ODBC 1.0) Devolve o minuto com base no campo minuto em time_exp como um valor inteiro no intervalo de 0-59.
MÊS(date_exp) (ODBC 1.0) Devolve o mês com base no campo de mês em date_exp como um valor inteiro no intervalo de 1 a 12.
MONTHNAME(date_exp) (ODBC 2.0) Retorna uma cadeia de caracteres contendo o nome específico da fonte de dados do mês (por exemplo, janeiro a dezembro ou janeiro a dezembro para uma fonte de dados que usa inglês ou Januar a dezembro para uma fonte de dados que usa alemão) para a parte do mês de date_exp.
AGORA( ) (ODBC 1.0) Retorna a data e hora atuais como um valor de carimbo de data/hora.
TRIMESTRE(date_exp) (ODBC 1.0) Devolve o trimestre em date_exp como um valor inteiro no intervalo de 1 a 4, em que 1 representa 1 de janeiro a 31 de março.
SEGUNDO(time_exp) (ODBC 1.0) Devolve o segundo com base no segundo campo em time_exp como um valor inteiro no intervalo de 0 a 59.
TIMESTAMPADD(intervalo, integer_exp, timestamp_exp) (ODBC 2.0) Retorna o carimbo de data/hora calculado adicionando integer_exp intervalos do tipo intervalo a timestamp_exp. Os valores válidos de intervalo são as seguintes palavras-chave:

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

em que os segundos fracionários são expressos em bilionésimos de segundo. Por exemplo, a instrução SQL a seguir retorna o nome de cada funcionário e sua data de aniversário de um ano:

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

Se timestamp_exp for um valor de tempo e intervalo especificar dias, semanas, meses, trimestres ou anos, a parte de data do timestamp_exp será definida como a data atual antes de calcular o carimbo de data/hora resultante.

Se timestamp_exp for um valor de data e intervalo especificar segundos, segundos, minutos ou horas fracionários, a parte de tempo do timestamp_exp será definida como 0 antes de calcular o carimbo de data/hora resultante.

Um aplicativo determina quais intervalos uma fonte de dados suporta chamando SQLGetInfo com a opção SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF(intervalo, timestamp_exp1, timestamp_exp2) (ODBC 2.0) Devolve o número inteiro de intervalos do tipo intervalo pelo qual timestamp_exp2 é superior a timestamp_exp1. Os valores válidos de intervalo são as seguintes palavras-chave:

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

em que os segundos fracionários são expressos em bilionésimos de segundo. Por exemplo, a instrução SQL a seguir retorna o nome de cada funcionário e o número de anos em que eles foram empregados:

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

Se qualquer expressão de carimbo de data/hora for um valor de data e intervalo especificar dias, semanas, meses, trimestres ou anos, a parte de data desse carimbo de data/hora será definida como a data atual antes de calcular a diferença entre os carimbos de data/hora.

Se qualquer expressão de carimbo de data/hora for um valor de data e intervalo especificar segundos fracionários, segundos, minutos ou horas, a parte de hora desse carimbo de data/hora será definida como 0 antes de calcular a diferença entre os carimbos de data/hora.

Um aplicativo determina quais intervalos uma fonte de dados suporta chamando SQLGetInfo com a opção SQL_TIMEDATE_DIFF_INTERVALS.
SEMANA(date_exp) (ODBC 1.0) Devolve a semana do ano com base no campo semana em date_exp como um valor inteiro no intervalo de 1 a 53.
ANO(date_exp) (ODBC 1.0) Devolve o ano com base no campo de ano em date_exp como um valor inteiro. O intervalo depende da fonte de dados.