DB2 - Exemplos simples - DATE TIME



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 - Exemplos simples - DATE TIME

Funções de data do DB2 são as funções escalares fornecidas pela IBM para lidar e manipular os valores de data no banco de dados DB2.
A disponibilidade dessas funções de data e hora no DB2 torna muito eficaz e fácil manipular os valores relacionados à data e hora.
Neste artigo, daremos uma olhada em algumas das funções de data que estão disponíveis no DB2 e que podem ser usadas para nossa conveniência.
Recupere os valores atuais de data e hora no DB2.

Existem certos registros embutidos do DB2 que nos ajudam a recuperar os valores relacionados à data para o período atual.

Vamos agora dar uma olhada em algumas das funções adicionais relacionadas a datas que estão disponíveis no DB2.

O propósito e a descrição de cada uma das funções também são especificados na tabela a seguir, mostrando funções de data do DB2.

DB2 date functions are the scalar functions provided by IBM to handle and manipulate the date values in the DB2 database.
The availability of these date and time functions in DB2 makes it very effective and easy to manipulate the date and time-related values.
In this article, we will have a look at some of the date functions that are available in DB2 and which can be used for our convenience.
Retrieve current date and time values in DB2.

There are certain in-built DB2 registers that help us to retrieve the date-related values for the current period.

Let us now have a look at some of the additional date-related functions that are available in DB2.

The purpose and description for each of the functions are also specified in the following table showing date functions of DB2.


CURRENT DATE

Por exemplo, se quisermos recuperar o valor atual de data, ele pode ser recuperado usando a seguinte instrução de consulta.
For example, if we want to retrieve the current date value, it can be retrieved using the following query statement.

    05  WS-CURRENT-DATE  PIC X(010) VALUE SPACES.

    EXEC SQL
         SELECT CURRENT DATE
           INTO :WS-CURRENT-DATE 
           FROM SYSIBM.SYSDUMMY1
    END-EXEC

    OU

    EXEC SQL
         SET :WS-CURRENT-DATE = CURRENT DATE
    END-EXEC

    Resultado: 2021-11-19
CURRENT TIME

Agora, tentaremos recuperar o valor da hora atual, que pode ser recuperado no DB2 usando a seguinte instrução de consulta.
Now we will try to retrieve the current time value, which can be retrieved in DB2 using the following query statement.


    05  WS-CURRENT-TIME  PIC X(008) VALUE SPACES.	

    EXEC SQL
         SELECT CURRENT TIME
           INTO :WS-CURRENT-TIME 
           FROM SYSIBM.SYSDUMMY1
    END-EXEC

    OU

    EXEC SQL
         SET :WS-CURRENT-TIME = CURRENT TIME
    END-EXEC    

    Resultado: 10:22:15
CURRENT TIMESTAMP

Podemos usar a seguinte instrução de consulta para obter o valor do timestamp no DB2.
We can use the following query statement to get the timestamp value in DB2.


    05  WS-CURRENT-TS    PIC X(026) VALUE SPACES.
	
    EXEC SQL
         SELECT CURRENT TIMESTAMP
           INTO :WS-CURRENT-TS 
           FROM SYSIBM.SYSDUMMY1
    END-EXEC

    OU

    EXEC SQL
         SET :WS-CURRENT-TS = CURRENT TIMESTAMP
    END-EXEC	

    Resultado: 2021-11-19-10.22.15.289410

Vamos agora dar uma olhada em algumas das funções adicionais relacionadas a datas que estão disponíveis no DB2.
O propósito e a descrição de cada uma das funções também são especificados na tabela a seguir, mostrando funções de data do DB2.

Let us now have a look at some of the additional date-related functions that are available in DB2.
The purpose and description for each of the functions are also specified in the following table showing date functions of DB2.


Função - Function Descrição - Description
ADD_DAYS Retorna um valor de data e hora que representa o primeiro argumento mais um número especificado de dias.
Returns a datetime value that represents the first argument plus a specified number of days.
ADD_HOURS Retorna um timestamp que representa o primeiro argumento mais um número especificado de horas.
Returns a timestamp value that represents the first argument plus a specified number of hours.
ADD_MINUTES Retorna um timestamp que representa o primeiro argumento mais um número especificado de minutos.
Returns a timestamp value that represents the first argument plus a specified number of minutes.
ADD_MONTHS Retorna um valor datetime que representa a expressão mais um número especificado de meses.
Returns a datetime value that represents expression plus a specified number of months.
ADD_SECONDS Retorna um timestamp que representa o primeiro argumento mais um número especificado de segundos e segundos fracionários.
Returns a timestamp value that represents the first argument plus a specified number of seconds and fractional seconds.
ADD_YEARS Retorna um valor de data e hora que representa o primeiro argumento mais um número especificado de anos.
Returns a datetime value that represents the first argument plus a specified number of years.
AGE Retorna um valor numérico que especifica o número de anos completos, meses completos e dias completos entre o timestamp atual e o argumento.
Returns a numeric value that specifies the number of full years, full months, and full days between the current timestamp and the argument.
DATE_PART Retorna parte de uma data e hora com base em seu argumento.
Returns portion of a datetime based on its argument.
DATE_TRUNC Retorna uma expressão de timestamp arredondada para a unidade especificada.
Returns a timestamp expression rounded to the specified unit.
DAY Retorna a parte do dia de um valor.
Returns the day part of a value.
DAYNAME Retorna uma cadeia de caracteres contendo o nome do dia (por exemplo, sexta-feira) para a parte do dia da expressão, com base no nome do local ou no valor do registro especial CURRENT LOCALE LC_TIME.
Returns a character string containing the name of the day (for example, Friday) for the day portion of expression, based on locale-name or the value of the special register CURRENT LOCALE LC_TIME.
DAYOFMONTH Retorna um número inteiro entre 1 e 31 que representa o dia do mês.
Returns an integer between 1 and 31 that represents the day of the month.
DAYOFWEEK Retorna o dia da semana no primeiro argumento como um valor inteiro.
O valor inteiro está no intervalo de 1 a 7, onde 1 representa o primeiro dia da semana, conforme especificado no segundo argumento.
Returns the day of the week in the first argument as an integer value.
The integer value is in the range 1-7, where 1 represents the first day of the week, as specified in the second argument.
DAYOFWEEK_ISO Retorna o dia da semana a partir de um valor, em que 1 é segunda-feira e 7 é domingo.
Returns the day of the week from a value, where 1 is Monday and 7 is Sunday.
DAYOFYEAR Retorna o dia do ano a partir de um valor.
Returns the day of the year from a value.
DAYS Retorna uma representação inteira de uma data.
Returns an integer representation of a date.
DAYS_BETWEEN Retorna o número de dias inteiros entre os argumentos especificados.
Returns the number of full days between the specified arguments.
DAYS_TO_END_OF_MONTH Retorna o número de dias até o final do mês.
Returns the number of days to the end of the month.
EXTRACT Retorna uma parte de uma data ou timestamp com base nos argumentos.
Returns a portion of a date or timestamp based on the arguments.
FIRST_DAY Retorna uma data ou timestamp que representa o primeiro dia do mês do argumento.
Returns a date or timestamp that represents the first day of the month of the argument.
FROM_UTC_TIMESTAMP Retorna um TIMESTAMP que é convertido do Tempo Universal Coordenado para o fuso horário especificado pela string de fuso horário.
Returns a TIMESTAMP that is converted from Coordinated Universal Time to the timezone that is specified by the timezone string.
HOUR Retorna a parte da hora de um valor.
Returns the hour part of a value.
HOURS_BETWEEN Retorna o número de horas completas entre os argumentos especificados.
Returns the number of full hours between the specified arguments.
JULIAN_DAY Retorna um valor inteiro que representa o número de dias de 1 ° de janeiro de 4712 AC até a data especificada no argumento.
Returns an integer value representing the number of days from January 1, 4712 B.C. to the date specified in the argument.
LAST_DAY Retorna um valor datetime que representa o último dia do mês do argumento.
Returns a datetime value that represents the last day of the month of the argument.
MICROSECOND Retorna a parte em microssegundo de um valor.
Returns the microsecond part of a value.
MIDNIGHT_SECONDS Retorna um valor inteiro que representa o número de segundos entre a meia-noite e um valor de tempo especificado.
Returns an integer value representing the number of seconds between midnight and a specified time value.
MINUTE Retorna a parte dos minutos de um valor.
Returns the minute part of a value.
MINUTES_BETWEEN Retorna o número de minutos completos entre os argumentos especificados.
Returns the number of full minutes between the specified arguments.
MONTH Retorna a parte do mês de um valor.
Returns the month part of a value.
MONTHNAME Retorna uma cadeia de caracteres contendo o nome do mês (por exemplo, janeiro) para a parte do mês da expressão, com base no nome do local ou no valor do registro especial CURRENT LOCALE LC_TIME.
Returns a character string containing the name of the month (for example, January) for the month portion of expression, based on locale-name or the value of the special register CURRENT LOCALE LC_TIME.
MONTHS_BETWEEN Retorna uma estimativa do número de meses entre a expressão1 e a expressão2.
Returns an estimate of the number of months between expression1 and expression2.
NEXT_DAY Retorna um valor de data e hora que representa o primeiro dia da semana, nomeado por string-expression, que é posterior à inexpressão de data.
Returns a datetime value that represents the first weekday, named by string-expression, that is later than the date inexpression.
NEXT_MONTH Retorna o primeiro dia do próximo mês após a data especificada.
Returns the first day of the next month after the specified date.
NEXT_QUARTER Retorna o primeiro dia do próximo trimestre após a data especificada.
Returns the first day of the next quarter after the specified date.
NEXT_WEEK Retorna o primeiro dia da próxima semana após a data especificada.
Returns the first day of the next week after the specified date.
NEXT_YEAR Retorna o primeiro dia do próximo ano após a data especificada.
Returns the first day of the next year after the specified date.
NOW Retorna um timestamp com base em quando a instrução SQL é executada no servidor atual.
Returns a timestamp based on when the SQL statement is executed at the current server.
QUARTER Retorna um número inteiro que representa o trimestre do ano em que reside uma data.
Returns an integer that represents the quarter of the year in which a date resides.
ROUND Retorna um valor de data e hora, arredondado para a unidade especificada por format-string.
Returns a datetime value, rounded to the unit specified by format-string.
ROUND_TIMESTAMP Retorna um timestamp que é a expressão arredondada para a unidade especificada pela string de formato.
Returns a timestamp that is the expression rounded to the unit specified by the format-string.
SECOND Retorna a parte dos segundos de um valor.
Returns the seconds part of a value.
SECONDS_BETWEEN Retorna o número de segundos completos entre os argumentos especificados.
Returns the number of full seconds between the specified arguments.
THIS_MONTH Retorna o primeiro dia do mês na data especificada.
Returns the first day of the month in the specified date.
THIS_QUARTER Retorna o primeiro dia do trimestre na data especificada.
Returns the first day of the quarter in the specified date.
THIS_WEEK Retorna o primeiro dia da semana na data especificada.
Returns the first day of the week in the specified date.
THIS_YEAR Retorna o primeiro dia do ano na data especificada.
Returns the first day of the year in the specified date.
TIMESTAMP_FORMAT Retorna um timestamp de uma cadeia de caracteres (argumento1) que foi interpretada usando um modelo de formato (argumento2).
Returns a timestamp from a character string (argument1) that has been interpreted using a format template (argument2).
TIMESTAMP_ISO Retorna um timestamp com base em um argumento de data, hora ou timestamp.
Se o argumento for uma data, ele insere zero para todos os elementos de tempo.
Se o argumento for um tempo, ele insere o valor de CURRENT DATE para os elementos de data e zero para o elemento de tempo fracionário.
Returns a timestamp value based on a date, time, or timestamp argument.
If the argument is a date, it inserts zero for all the time elements.
If the argument is a time, it inserts the value of CURRENT DATE for the date elements, and zero for the fractional time element.
TIMESTAMPDIFF Retorna um número estimado de intervalos do tipo argument1, com base na diferença entre dois timestamps.
O segundo argumento é o resultado da subtração de dois tipos de timestamp e da conversão do resultado em CHAR.
Returns an estimated number of intervals of type argument1, based on the difference between two timestamps.
The second argument is the result of subtracting two timestamp types and converting the result to CHAR.
TO_CHAR Retorna uma representação CHARACTER de um timestamp.
Returns a CHARACTER representation of a timestamp.
TO_DATE Retorna um timestamp de uma string de caracteres.
Returns a timestamp from a character string.
TO_NCHAR Retorna uma representação de caractere nacional de uma expressão de entrada que foi formatada usando um modelo de caractere.
Returns a national character representation of an input expression that has been formatted using a character template.
TO_TIMESTAMP Retorna um timestamp baseado na interpretação da string de entrada usando o formato especificado.
Returns a timestamp that is based on the interpretation of the input string using the specified format.
TO_UTC_TIMESTAMP Retorna um TIMESTAMP que é convertido do Tempo Universal Coordenado para o fuso horário especificado pela string de fuso horário.
Returns a TIMESTAMP that is converted from Coordinated Universal Time to the timezone specified by the timezone string.
TRUNCATE or TRUNC<>/a Retorna um valor de data e hora, truncado para a unidade especificada por format-string.
Returns a datetime value, truncated to the unit specified by format-string.
TRUNC_TIMESTAMP Retorna um timestamp que é a expressão truncada para a unidade especificada pela string de formato.
Returns a timestamp that is the expression truncated to the unit specified by the format-string.
VARCHAR_FORMAT Retorna uma representação CHARACTER de um timestamp (argumento1), formatado de acordo com um modelo (argumento2).
Returns a CHARACTER representation of a timestamp (argument1), formatted according to a template (argument2).
WEEK Retorna a semana do ano a partir de um valor, em que a semana começa com o domingo.
Returns the week of the year from a value, where the week starts with Sunday.
WEEK_ISO Retorna a semana do ano a partir de um valor, em que a semana começa com segunda-feira.
Returns the week of the year from a value, where the week starts with Monday.
WEEKS_BETWEEN Retorna o número de semanas inteiras entre os argumentos especificados.
Returns the number of full weeks between the specified arguments.
YEAR Retorna a parte do ano de um valor.
Returns the year part of a value.
YEARS_BETWEEN Retorna o número de anos completos entre os argumentos especificados.
Returns the number of full years between the specified arguments.
YMD_BETWEEN Retorna um valor numérico que especifica o número de anos completos, meses completos e dias completos entre dois valores de data e hora.
Returns a numeric value that specifies the number of full years, full months, and full days between two datetime values.

Let use see examples below.
Vamos ver os exemplos abaixo.

Example 1 - Exemplo 1:

How to get current date, time and timestamp?
Como obter data, hora e carimbo de data/hora atuais?

    SELECT current date      FROM sysibm.sysdummy1;
    SELECT current time      FROM sysibm.sysdummy1;
    SELECT current timestamp FROM sysibm.sysdummy1;

Example 2 - Exemplo 2:

How to get year, month, day, hour, minutes, seconds, and microseconds from current timestamp?
Como obter ano, mês, dia, hora, minutos, segundos e microssegundos do carimbo de data/hora atual?

    SELECT YEAR (current timestamp)        FROM sysibm.sysdummy1;
    SELECT MONTH (current timestamp)       FROM sysibm.sysdummy1;
    SELECT DATE (current timestamp)        FROM sysibm.sysdummy1;
    SELECT TIME (current timestamp)        FROM sysibm.sysdummy1;
    SELECT DAY (current timestamp)         FROM sysibm.sysdummy1;
    SELECT HOUR (current timestamp)        FROM sysibm.sysdummy1;
    SELECT MINUTE (current timestamp)      FROM sysibm.sysdummy1;
    SELECT SECOND (current timestamp)      FROM sysibm.sysdummy1;
    SELECT MICROSECOND (current timestamp) FROM sysibm.sysdummy1;

Example 3 - Exemplo 3:

How to perform date and time calculations?
Como fazer cálculos de data e hora?

    SELECT current date + 2 YEAR FROM sysibm.sysdummy1;
    SELECT current date + 1 YEARS + 10 MONTHS FROM sysibm.sysdummy1;
    SELECT current date + 1 YEARS + 5 MONTHS + 10 DAYS FROM sysibm.sysdummy1;
    SELECT current time + 5 HOURS - 3 MINUTES + 10 SECONDS FROM sysibm.sysdummy1;

Example 4 - Exemplo 4:

How to find number of days between two dates, you can subtract dates as below:
Como encontrar o número de dias entre duas datas, você pode subtrair as datas conforme abaixo:

    SELECT days (current date) - days (date('1990-09-02')) FROM sysibm.sysdummy1;

Example 5 - Exemplo 5:

If you want to concatenate date or time values with other text, you need to convert the value into a character string first.
To do this, you can simply use the CHAR() function:
Se você deseja concatenar valores de data ou hora com outro texto, primeiro é necessário converter o valor em uma string de caracteres.
Para fazer isso, você pode simplesmente usar a função CHAR ():

    SELECT "Current Date -" || char(current date) FROM sysibm.sysdummy1;
    SELECT "Current Time -" || char(current time) FROM sysibm.sysdummy1;
    SELECT "Current Date with 12 hours -" char(current date + 10 hours) FROM sysibm.sysdummy1;

Example 6 - Exemplo 6:

If you want to convert a character string to a date or time value, you can use as below:
Se você deseja converter uma string de caracteres em um valor de data ou hora, você pode usar o seguinte:

    SELECT TIMESTAMP ('1990-09-02-12.00.00.000000') FROM sysibm.sysdummy1;
    SELECT TIMESTAMP ('1990-09-02 12:00:00') FROM sysibm.sysdummy1;
    SELECT DATE ('1990-09-02') FROM sysibm.sysdummy1;
    SELECT DATE ('02/09/1990') FROM sysibm.sysdummy1;
    SELECT TIME ('10:00:00')   FROM sysibm.sysdummy1;
    SELECT TIME ('10.00.00')   FROM sysibm.sysdummy1;

Example 7 - Exemplo 7:

How to change Date/Time Format ? Let us see formatting date in various formats.
Como alterar o formato de data / hora? Vamos ver a data de formatação em vários formatos.

    SELECT CHAR(DATE (CURRENT TIMESTAMP),ISO) AS date_in_iso,
           CHAR(DATE (CURRENT TIMESTAMP),USA) AS date_in_usa,
           CHAR(DATE (CURRENT TIMESTAMP),EUR) AS date_in_eur,
           CHAR(DATE (CURRENT TIMESTAMP),JIS) AS date_in_jis
      FROM sysibm.sysdummy1;

Result - Resultado:

Column_name Value
date_in_iso 1990-09-02
date_in_usa 1990/09/02
date_in_eur 1990.09.02
date_in_jis 1990.09.02

Example 8 - Exemplo 8:

Let us see how to convert date format using VARCHAR_FORMAT function.
Vamos ver como converter o formato de data usando a função VARCHAR_FORMAT.

    SELECT
        VARCHAR_FORMAT(CURRENT TIMESTAMP,'YYYY-MM-DD') AS VCHAR_FORMATED,
        DATE(CURRENT TIMESTAMP) AS DATE_VALUE
    FROM sysibm.sysdummy1;

Result - Resultado:

    VCHAR_FORMATED        DATE_VALUE

    2013-04-11            04/11/2013

Example 9 - Exemplo 9:

The following SQL statement shows how to use VARCHAR_FORMAT function in where clause.
A seguinte instrução SQL mostra como usar a função VARCHAR_FORMAT na cláusula where.

    SELECT * 
      FROM Employee_table
     WHERE VARCHAR_FORMAT (date_col,'YYYY-MM-DD') = '1990-09-02'