

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tipos de datetime
<a name="Datetime_types"></a>

Os tipos de dados de data e hora incluem DATE, TIME, TIMESTAMP\$1LTZ e TIMESTAMP\$1NTZ.

**Topics**
+ [DATE](Datetime_types-date.md)
+ [TIMESTAMP\$1LTZ](Datetime_types-timestamp_LTZ.md)
+ [TIMESTAMP\$1NTZ](Datetime_types-TIMESTAMP_NTZ.md)
+ [Exemplos com tipos de datetime](Examples_with_datetime_types.md)
+ [Literais de data, hora e timestamp](Date_and_time_literals.md)
+ [Literais de intervalo](Interval_literals.md)
+ [Tipos de dados e literais de intervalo](interval_data_types_spark.md)

# DATE
<a name="Datetime_types-date"></a>

Use o tipo de dados DATE para armazenar datas de calendário simples sem timestamps.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/Datetime_types-date.html)

# TIMESTAMP\$1LTZ
<a name="Datetime_types-timestamp_LTZ"></a>

Use o tipo de dados TIMESTAMP\$1LTZ para armazenar valores completos de timestamp que incluem a data, a hora do dia e o fuso horário local. 

TIMESTAMP representa valores que compreendem valores de campos`year`,,,`month`,`day`, e `hour` `minute``second`, com o fuso horário local da sessão. O `timestamp` valor representa um ponto absoluto no tempo.

TIMESTAMP no Spark é um alias especificado pelo usuário associado a uma das variações TIMESTAMP\$1LTZ e TIMESTAMP\$1NTZ. Você pode definir o tipo de timestamp padrão como TIMESTAMP\$1LTZ (valor padrão) ou TIMESTAMP\$1NTZ por meio da configuração. `spark.sql.timestampType`

# TIMESTAMP\$1NTZ
<a name="Datetime_types-TIMESTAMP_NTZ"></a>

Use o tipo de dados TIMESTAMP\$1NTZ para armazenar valores completos de timestamp que incluem a data, a hora do dia, sem o fuso horário local. 

TIMESTAMP representa valores que compreendem valores de campos`year`,`month`,, `day``hour`, e. `minute` `second` Todas as operações são realizadas sem levar em conta nenhum fuso horário.

TIMESTAMP no Spark é um alias especificado pelo usuário associado a uma das variações TIMESTAMP\$1LTZ e TIMESTAMP\$1NTZ. Você pode definir o tipo de timestamp padrão como TIMESTAMP\$1LTZ (valor padrão) ou TIMESTAMP\$1NTZ por meio da configuração. `spark.sql.timestampType`

# Exemplos com tipos de datetime
<a name="Examples_with_datetime_types"></a>

Os exemplos a seguir mostram como utilizar tipos de data e hora que são suportados pelo AWS Clean Rooms.

## Exemplos de data
<a name="Examples_with_datetime_types-date-examples"></a>

Os exemplos a seguir inserem datas que possuem formatos diferentes e exibem a saída. 

```
select * from datetable order by 1;

start_date |  end_date
-----------------------
2008-06-01 | 2008-12-31
2008-06-01 | 2008-12-31
```

Se você inserir um valor de timestamp em uma coluna DATE, a parte da hora será ignorada e apenas a data será carregada.

## Exemplos de tempo
<a name="Examples_with_datetime_types-time-examples"></a>

Os exemplos a seguir inserem os valores TIME e TIMETZ com formatos diferentes e exibem a saída.

```
select * from timetable order by 1;
start_time |  end_time
------------------------
 19:11:19  | 20:41:19+00
 19:11:19  | 20:41:19+00
```

# Literais de data, hora e timestamp
<a name="Date_and_time_literals"></a>

A seguir estão as regras para trabalhar com literais de data, hora e timestamp compatíveis com o Spark SQL. AWS Clean Rooms 

## Datas
<a name="Date_and_time_literals-dates"></a>

A tabela a seguir mostra datas de entrada que são exemplos válidos de valores de datas literais que você pode carregar em AWS Clean Rooms tabelas. O modo `MDY DateStyle` é considerado em vigor. Este modo significa que o valor do mês precede o valor do dia em strings tais como `1999-01-08` e `01/02/00`. 

**nota**  
Um literal de data ou timestamp deve ser colocado entre aspas ao carregá-lo em uma tabela.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/Date_and_time_literals.html)

## Times
<a name="Date_and_time_literals-times"></a>

A tabela a seguir mostra os tempos de entrada que são exemplos válidos de valores de tempo literais que você pode carregar nas AWS Clean Rooms tabelas. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/Date_and_time_literals.html)

## Valores especiais de datetime
<a name="Date_and_time_literals-special-datetime-values"></a>

A tabela a seguir mostra valores especiais que podem ser usados como literais de data e hora e como argumentos para funções de data. Eles exigem aspas simples e são convertidos em valores de timestamp regulares durante o processamento da consulta. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/Date_and_time_literals.html)

Os exemplos a seguir mostram como `now` e `today` funcionam com a função DATE\$1ADD.

```
select date_add('today', 1);

date_add
---------------------
2009-11-17 00:00:00
(1 row)

select date_add('now', 1);

date_add
----------------------------
2009-11-17 10:45:32.021394
(1 row)
```

# Literais de intervalo
<a name="Interval_literals"></a>

A seguir estão as regras para trabalhar com literais de intervalo compatíveis com o AWS Clean Rooms Spark SQL.

Use um literal de intervalo para identificar períodos de tempo específicos, tais como `12 hours` ou `6 weeks`. Você pode usar esses literais de intervalo em condições e cálculos que envolvem expressões de data e hora. 

**nota**  
Você não pode usar o tipo de dados INTERVAL para colunas em AWS Clean Rooms tabelas.

 Um intervalo é expressado como uma combinação da palavra-chave de INTERVAL com uma quantidade numérica e uma parte da data compatível; por exemplo `INTERVAL '7 days'` ou `INTERVAL '59 minutes'`. Você pode conectar várias quantidades e unidades para formar um intervalo mais preciso, por exemplo: `INTERVAL '7 days, 3 hours, 59 minutes'`. As abreviaturas e os plurais de cada unidade também são compatíveis; por exemplo: `5 s`, `5 second` e `5 seconds` são intervalos equivalentes.

Se você não especificar uma parte da data, o valor do intervalo representará os segundos. Você pode especificar o valor de quantidade como uma fração (por exemplo: `0.5 days`).

## Exemplos
<a name="section_interval-literals-examples"></a>

Os exemplos a seguir mostram uma série de cálculos com diferentes valores de intervalo.

O exemplo a seguir adiciona 1 segundo à data especificada.

```
select caldate + interval '1 second' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:00:01
(1 row)
```

O exemplo a seguir adiciona 1 minuto à data especificada.

```
select caldate + interval '1 minute' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:01:00
(1 row)
```

O exemplo a seguir adiciona 3 horas e 35 minutos à data especificada.

```
select caldate + interval '3 hours, 35 minutes' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 03:35:00
(1 row)
```

O exemplo a seguir adiciona 52 semanas à data especificada

```
select caldate + interval '52 weeks' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-12-30 00:00:00
(1 row)
```

O exemplo a seguir adiciona 1 semana, 1 hora, 1 minuto e 1 segundo à data especificada.

```
select caldate + interval '1w, 1h, 1m, 1s' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-01-07 01:01:01
(1 row)
```

O exemplo a seguir adiciona 12 horas (meio dia) à data especificada.

```
select caldate + interval '0.5 days' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 12:00:00
(1 row)
```

O exemplo a seguir subtrai 4 meses de 31 de março de 2023 e o resultado é 30 de novembro de 2022. O cálculo considera o número de dias em um mês.

```
select date '2023-03-31' - interval '4 months';

?column?
---------------------
2022-11-30 00:00:00
```



# Tipos de dados e literais de intervalo
<a name="interval_data_types_spark"></a>

Você pode usar um tipo de dados de intervalo para armazenar espaços de tempo em unidades como `seconds`, `minutes`, `hours`, `days`, `months` e `years`. Tipos de dados e literais de intervalo podem ser usados em cálculos de data e hora, como adicionar intervalos a datas e carimbos de data e hora, somar intervalos e subtrair um intervalo de uma data ou carimbo de data e hora. Os literais de intervalo podem ser usados como valores de entrada para colunas de tipo de dados de intervalo em uma tabela. 

## Sintaxe do tipo de dados de intervalo
<a name="interval_data_types-syntax"></a>

Para especificar um tipo de dados de intervalo para armazenar um espaço de tempo em anos e meses:

```
INTERVAL year_to_month_qualifier
```

Para especificar um tipo de dados de intervalo para armazenar uma duração em dias, horas, minutos e segundos:

```
INTERVAL day_to_second_qualifier [ (fractional_precision) ]
```

## Sintaxe de literal de intervalo
<a name="interval_data_types-syntax-literal"></a>

Para especificar um literal de intervalo para definir um espaço de tempo em anos e meses:

```
INTERVAL quoted-string year_to_month_qualifier
```

Para especificar um literal de intervalo para definir uma duração em dias, horas, minutos e segundos:

```
INTERVAL quoted-string day_to_second_qualifier [ (fractional_precision) ]
```

## Argumentos
<a name="interval_data_types-arguments"></a>

 *quoted-string*   
Determina um valor numérico positivo ou negativo especificando uma quantidade e a unidade de data e hora como uma string de entrada. **Se a *string entre aspas* contiver somente um número, AWS Clean Rooms determinará as unidades do qualificador year\$1to\$1month\$1qualifier ou day\$1to\$1second\$1qualifier.** Por exemplo, `'23' MONTH` representa `1 year 11 months`, `'-2' DAY` representa `-2 days 0 hours 0 minutes 0.0 seconds`, `'1-2' MONTH` representa `1 year 2 months` e `'13 day 1 hour 1 minute 1.123 seconds' SECOND` representa `13 days 1 hour 1 minute 1.123 seconds`. Para obter mais informações sobre formatos de saída de um intervalo, consulte [Estilos de intervalo](#interval_data_types-interval-styles).

 *year\$1to\$1month\$1qualifier*   
Especifica a faixa do intervalo. Se você usar um qualificador e criar um intervalo com unidades de tempo menores que o qualificador, AWS Clean Rooms truncará e descartará as partes menores do intervalo. Os valores válidos para *year\$1to\$1month\$1qualifier* são:  
+ `YEAR`
+ `MONTH`
+ `YEAR TO MONTH`

 *day\$1to\$1second\$1qualifier*   
Especifica a faixa do intervalo. Se você usar um qualificador e criar um intervalo com unidades de tempo menores que o qualificador, AWS Clean Rooms truncará e descartará as partes menores do intervalo. Os valores válidos para *year\$1to\$1month\$1qualifier* são:  
+ `DAY`
+ `HOUR`
+ `MINUTE`
+ `SECOND`
+ `DAY TO HOUR`
+ `DAY TO MINUTE`
+ `DAY TO SECOND`
+ `HOUR TO MINUTE`
+ `HOUR TO SECOND`
+ `MINUTE TO SECOND`
A saída do literal INTERVAL é truncada no menor componente INTERVAL especificado. Por exemplo, ao usar um qualificador MINUTE, AWS Clean Rooms descarta as unidades de tempo menores que MINUTE.  

```
select INTERVAL '1 day 1 hour 1 minute 1.123 seconds' MINUTE
```
O valor resultante é truncado para `'1 day 01:01:00'`.

 *fractional\$1precision*   
Parâmetro opcional que especifica o número de dígitos fracionários permitidos no intervalo. O argumento *fractional\$1precision* só deverá ser especificado se seu intervalo contiver SECOND. Por exemplo, `SECOND(3)` cria um intervalo que permite somente três dígitos fracionários, como 1.234 segundos. O número máximo de dígitos fracionários é seis.

A configuração da sessão `interval_forbid_composite_literals` determina se um erro é retornado quando um intervalo é especificado com as partes YEAR TO MONTH e DAY TO SECOND. 

## Operações aritméticas de intervalo
<a name="interval_data_types-arithmetic"></a>

É possível usar valores de intervalo com outros valores de data e hora para realizar operações aritméticas. As tabelas a seguir descrevem as operações disponíveis e qual tipo de dados resulta de cada operação. 

**nota**  
 As operações que podem produzir resultados `date` e `timestamp` o fazem com base na menor unidade de tempo incluída na equação. Por exemplo, quando você adiciona `interval` a `date`, o resultado é `date`, se for um intervalo de YEAR TO MONTH, e um carimbo de data e hora, se for um intervalo de DAY TO SECOND. 

As operações em que o primeiro operando é um `interval` produzem os seguintes resultados para o segundo operando fornecido:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/interval_data_types_spark.html)

As operações em que o primeiro operando é um `date` produzem os seguintes resultados para o segundo operando fornecido:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/interval_data_types_spark.html)

As operações em que o primeiro operando é um `timestamp` produzem os seguintes resultados para o segundo operando fornecido:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/interval_data_types_spark.html)

## Estilos de intervalo
<a name="interval_data_types-interval-styles"></a>
+ `postgres`: segue o estilo do PostgreSQL. Esse é o padrão.
+ `postgres_verbose`: segue o estilo detalhado do PostgreSQL.
+ `sql_standard`: segue o estilo de literais de intervalo padrão do SQL.

O comando a seguir define o estilo de intervalo como `sql_standard`.

```
SET IntervalStyle to 'sql_standard';
```

**formato de saída postgres**

Veja abaixo o formato de saída para o estilo de intervalo `postgres`. Cada valor numérico pode ser negativo.

```
'<numeric> <unit> [, <numeric> <unit> ...]'
```

```
select INTERVAL '1-2' YEAR TO MONTH::text 

varchar
---------------
1 year 2 mons
```

```
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text

varchar
------------------
1 day 02:03:04.5678
```

**formato de saída postgres\$1verbose**

A sintaxe postgres\$1verbose é semelhante à do postgres, mas as saídas do postgres\$1verbose também contêm a unidade de tempo.

```
'[@] <numeric> <unit> [, <numeric> <unit> ...] [direction]'
```

```
select INTERVAL '1-2' YEAR TO MONTH::text 

varchar
-----------------
@ 1 year 2 mons
```

```
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text

varchar
---------------------------
@ 1 day 2 hours 3 mins 4.56 secs
```

**formato de saída sql\$1standard**

Os valores do intervalo de ano para mês são formatados da maneira a seguir. Especificar um sinal negativo antes do intervalo indica que o intervalo é um valor negativo e se aplica a todo o intervalo.

```
'[-]yy-mm'
```

Os valores do intervalo de dia para segundo são formatados da maneira a seguir.

```
'[-]dd hh:mm:ss.ffffff'
```

```
SELECT INTERVAL '1-2' YEAR TO MONTH::text 
  
varchar   
-------
1-2
```

```
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text 

varchar
---------------
1 2:03:04.5678
```

## Exemplos do tipo de dados de intervalo
<a name="interval_data_types-examples"></a>

Os exemplos a seguir demonstram como usar tipos de dados INTERVAL com tabelas.

```
create table sample_intervals (y2m interval month, h2m interval hour to minute);
insert into sample_intervals values (interval '20' month, interval '2 days 1:1:1.123456' day to second);
select y2m::text, h2m::text from sample_intervals;


      y2m      |       h2m      
---------------+-----------------
 1 year 8 mons | 2 days 01:01:00
```

```
update sample_intervals set y2m = interval '2' year where y2m = interval '1-8' year to month;
select * from sample_intervals;

   y2m   |       h2m       
---------+-----------------
 2 years | 2 days 01:01:00
```

```
delete from sample_intervals where h2m = interval '2 1:1:0' day to second;
select * from sample_intervals;

 y2m | h2m 
-----+-----
```

## Exemplos de literais de intervalo
<a name="interval_data_types_literals-examples"></a>

Os exemplos a seguir são executados com o estilo de intervalo definido como `postgres`.

O exemplo a seguir demonstra como criar um literal INTERVAL de um ano.

```
select INTERVAL '1' YEAR 

intervaly2m
---------------
1 years 0 mons
```

Se você especificar um *quoted-string* que exceda o qualificador, as unidades de tempo restantes serão truncadas do intervalo. No exemplo a seguir, um intervalo de 13 meses se torna um ano e um mês, mas o mês restante é omitido devido ao qualificador YEAR.

```
select INTERVAL '13 months' YEAR

intervaly2m
---------------
1 years 0 mons
```

Se você usar um qualificador inferior à string de intervalo, as unidades restantes serão incluídas.

```
select INTERVAL '13 months' MONTH

intervaly2m
---------------
1 years 1 mons
```

Especificar uma precisão no intervalo trunca o número de dígitos fracionários até a precisão especificada.

```
select INTERVAL '1.234567' SECOND (3)

intervald2s
--------------------------------
0 days 0 hours 0 mins 1.235 secs
```

Se você não especificar uma precisão, AWS Clean Rooms usa a precisão máxima de 6.

```
select INTERVAL '1.23456789' SECOND

intervald2s
-----------------------------------
0 days 0 hours 0 mins 1.234567 secs
```

O exemplo a seguir demonstra como criar um intervalo em faixas.

```
select INTERVAL '2:2' MINUTE TO SECOND

intervald2s
------------------------------
0 days 0 hours 2 mins 2.0 secs
```

Os qualificadores ditam as unidades que você está especificando. Por exemplo, embora o exemplo a seguir use a mesma *string entre aspas* de '2:2' do exemplo anterior, AWS Clean Rooms reconhece que ele usa unidades de tempo diferentes por causa do qualificador.

```
select INTERVAL '2:2' HOUR TO MINUTE

intervald2s
------------------------------
0 days 2 hours 2 mins 0.0 secs
```

Abreviações e plurais de cada unidade também são aceitos. Por exemplo, `5s`, `5 second` e `5 seconds` são intervalos equivalentes. As unidades aceitas são anos, meses, horas, minutos e segundos.

```
select INTERVAL '5s' SECOND

intervald2s
------------------------------
0 days 0 hours 0 mins 5.0 secs
```

```
select INTERVAL '5 HOURS' HOUR

intervald2s
------------------------------
0 days 5 hours 0 mins 0.0 secs
```

```
select INTERVAL '5 h' HOUR

intervald2s
------------------------------
0 days 5 hours 0 mins 0.0 secs
```

# Exemplos de literais de intervalo sem sintaxe de qualificador
<a name="interval_literals_examples"></a>

**nota**  
Os exemplos a seguir demonstram o uso de um literal de intervalo sem um qualificador `YEAR TO MONTH` ou `DAY TO SECOND`. Para obter informações sobre como usar o literal de intervalo recomendado com um qualificador, consulte [Tipos de dados e literais de intervalo](interval_data_types_spark.md).

Use um literal de intervalo para identificar períodos de tempo específicos, tais como `12 hours` ou `6 months`. Você pode usar esses literais de intervalo em condições e cálculos que envolvem expressões de data e hora. 

 Um literal de intervalo é expresso como uma combinação da palavra-chave de INTERVAL com uma quantidade numérica e uma parte da data compatível; por exemplo `INTERVAL '7 days'` ou `INTERVAL '59 minutes'`. Você pode conectar várias quantidades e unidades para formar um intervalo mais preciso, por exemplo: `INTERVAL '7 days, 3 hours, 59 minutes'`. As abreviaturas e os plurais de cada unidade também são compatíveis; por exemplo: `5 s`, `5 second` e `5 seconds` são intervalos equivalentes.

Se você não especificar uma parte da data, o valor do intervalo representará os segundos. Você pode especificar o valor de quantidade como uma fração (por exemplo: `0.5 days`).

Os exemplos a seguir mostram uma série de cálculos com diferentes valores de intervalo.

O exemplo a seguir adiciona 1 segundo à data especificada.

```
select caldate + interval '1 second' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:00:01
(1 row)
```

O exemplo a seguir adiciona 1 minuto à data especificada.

```
select caldate + interval '1 minute' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:01:00
(1 row)
```

O exemplo a seguir adiciona 3 horas e 35 minutos à data especificada.

```
select caldate + interval '3 hours, 35 minutes' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 03:35:00
(1 row)
```

O exemplo a seguir adiciona 52 semanas à data especificada.

```
select caldate + interval '52 weeks' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-12-30 00:00:00
(1 row)
```

O seguinte adiciona 1 semana, 1 hora, 1 minuto e 1 segundo à data especificada.

```
select caldate + interval '1w, 1h, 1m, 1s' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-01-07 01:01:01
(1 row)
```

O exemplo a seguir adiciona 12 horas (meio dia) à data especificada.

```
select caldate + interval '0.5 days' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 12:00:00
(1 row)
```

O exemplo a seguir subtrai quatro meses de 15 de fevereiro de 2023 e o resultado é 15 de outubro de 2022.

```
select date '2023-02-15' - interval '4 months';

?column?
---------------------
2022-10-15 00:00:00
```

O exemplo a seguir subtrai quatro meses de 31 de março de 2023 e o resultado é 30 de novembro de 2022. O cálculo considera o número de dias em um mês.

```
select date '2023-03-31' - interval '4 months';

?column?
---------------------
2022-11-30 00:00:00
```