

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Jenis Datetime
<a name="Datetime_types"></a>

Tipe data datetime termasuk DATE, TIME, TIMESTAMP\$1LTZ, dan TIMESTAMP\$1NTZ.

**Topics**
+ [DATE](Datetime_types-date.md)
+ [STAMP\$1LTZ](Datetime_types-timestamp_LTZ.md)
+ [TIMESTAMP\$1NTZ](Datetime_types-TIMESTAMP_NTZ.md)
+ [Contoh dengan tipe datetime](Examples_with_datetime_types.md)
+ [Tanggal, waktu, dan literal stempel waktu](Date_and_time_literals.md)
+ [Literal interval](Interval_literals.md)
+ [Tipe data interval dan literal](interval_data_types_spark.md)

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

Gunakan tipe data DATE untuk menyimpan tanggal kalender sederhana tanpa cap waktu.

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

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

Gunakan tipe data TIMESTAMP\$1LTZ untuk menyimpan nilai stempel waktu lengkap yang mencakup tanggal, waktu hari, dan zona waktu lokal. 

TIMESTAMP mewakili nilai yang terdiri dari nilai bidang`year`,,,`month`,`day`,`hour`, dan `minute``second`, dengan zona waktu lokal sesi. `timestamp`Nilai mewakili titik waktu absolut.

TIMESTAMP di Spark adalah alias yang ditentukan pengguna yang terkait dengan salah satu variasi TIMESTAMP\$1LTZ dan TIMESTAMP\$1NTZ. Anda dapat mengatur tipe stempel waktu default sebagai TIMESTAMP\$1LTZ (nilai default) atau TIMESTAMP\$1NTZ melalui konfigurasi. `spark.sql.timestampType`

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

Gunakan tipe data TIMESTAMP\$1NTZ untuk menyimpan nilai stempel waktu lengkap yang menyertakan tanggal, waktu hari, tanpa zona waktu lokal. 

TIMESTAMP mewakili nilai yang terdiri dari nilai bidang`year`,,,`month`, `day``hour`, `minute` dan. `second` Semua operasi dilakukan tanpa memperhitungkan zona waktu.

TIMESTAMP di Spark adalah alias yang ditentukan pengguna yang terkait dengan salah satu variasi TIMESTAMP\$1LTZ dan TIMESTAMP\$1NTZ. Anda dapat mengatur tipe stempel waktu default sebagai TIMESTAMP\$1LTZ (nilai default) atau TIMESTAMP\$1NTZ melalui konfigurasi. `spark.sql.timestampType`

# Contoh dengan tipe datetime
<a name="Examples_with_datetime_types"></a>

Contoh berikut menunjukkan cara bekerja dengan tipe datetime yang didukung oleh. AWS Clean Rooms

## Contoh tanggal
<a name="Examples_with_datetime_types-date-examples"></a>

Contoh berikut menyisipkan tanggal yang memiliki format berbeda dan menampilkan output. 

```
select * from datetable order by 1;

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

Jika Anda memasukkan nilai stempel waktu ke kolom DATE, bagian waktu diabaikan dan hanya tanggal yang dimuat.

## Contoh waktu
<a name="Examples_with_datetime_types-time-examples"></a>

Contoh berikut menyisipkan nilai TIME dan TIMETZ yang memiliki format berbeda dan menampilkan output.

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

# Tanggal, waktu, dan literal stempel waktu
<a name="Date_and_time_literals"></a>

Berikut ini adalah aturan untuk bekerja dengan literal tanggal, waktu, dan stempel waktu yang didukung oleh AWS Clean Rooms Spark SQL. 

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

Tabel berikut menunjukkan tanggal masukan yang merupakan contoh valid dari nilai tanggal literal yang dapat Anda muat ke dalam AWS Clean Rooms tabel. `MDY DateStyle`Mode default diasumsikan berlaku. Mode ini berarti bahwa nilai bulan mendahului nilai hari dalam string seperti `1999-01-08` dan. `01/02/00` 

**catatan**  
Tanggal atau stempel waktu literal harus dilampirkan dalam tanda kutip saat Anda memuatnya ke dalam tabel.

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

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

Tabel berikut menunjukkan waktu masukan yang merupakan contoh valid dari nilai waktu literal yang dapat Anda muat ke dalam AWS Clean Rooms tabel. 

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

## Nilai datetime khusus
<a name="Date_and_time_literals-special-datetime-values"></a>

Tabel berikut menunjukkan nilai-nilai khusus yang dapat digunakan sebagai literal datetime dan sebagai argumen untuk fungsi tanggal. Mereka membutuhkan tanda kutip tunggal dan dikonversi ke nilai stempel waktu biasa selama pemrosesan kueri. 

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

Contoh berikut menunjukkan bagaimana `now` dan `today` bekerja dengan fungsi 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)
```

# Literal interval
<a name="Interval_literals"></a>

Berikut ini adalah aturan untuk bekerja dengan literal interval yang didukung oleh AWS Clean Rooms Spark SQL.

Gunakan interval literal untuk mengidentifikasi periode waktu tertentu, seperti `12 hours` atau`6 weeks`. Anda dapat menggunakan literal interval ini dalam kondisi dan perhitungan yang melibatkan ekspresi datetime. 

**catatan**  
Anda tidak dapat menggunakan tipe data INTERVAL untuk kolom dalam AWS Clean Rooms tabel.

 Interval dinyatakan sebagai kombinasi kata kunci INTERVAL dengan kuantitas numerik dan bagian tanggal yang didukung, misalnya `INTERVAL '7 days'` atau`INTERVAL '59 minutes'`. Anda dapat menghubungkan beberapa kuantitas dan unit untuk membentuk interval yang lebih tepat, misalnya:`INTERVAL '7 days, 3 hours, 59 minutes'`. Singkatan dan bentuk jamak dari setiap unit juga didukung; misalnya:`5 s`,`5 second`, dan `5 seconds` merupakan interval yang setara.

Jika Anda tidak menentukan bagian tanggal, nilai interval mewakili detik. Anda dapat menentukan nilai kuantitas sebagai pecahan (misalnya:`0.5 days`).

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

Contoh berikut menunjukkan serangkaian perhitungan dengan nilai interval yang berbeda.

Contoh berikut menambahkan 1 detik ke tanggal yang ditentukan.

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

Contoh berikut menambahkan 1 menit ke tanggal yang ditentukan.

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

Contoh berikut menambahkan 3 jam dan 35 menit ke tanggal yang ditentukan.

```
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)
```

Contoh berikut menambahkan 52 minggu ke tanggal yang ditentukan.

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

Contoh berikut menambahkan 1 minggu, 1 jam, 1 menit, dan 1 detik ke tanggal yang ditentukan.

```
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)
```

Contoh berikut menambahkan 12 jam (setengah hari) ke tanggal yang ditentukan.

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

Contoh berikut mengurangi 4 bulan dari 31 Maret 2023 dan hasilnya adalah 30 November 2022. Perhitungan mempertimbangkan jumlah hari dalam sebulan.

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

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



# Tipe data interval dan literal
<a name="interval_data_types_spark"></a>

Anda dapat menggunakan tipe data interval untuk menyimpan durasi waktu dalam unit seperti,,,`seconds`, `minutes``hours`, `days``months`, dan`years`. Tipe data interval dan literal dapat digunakan dalam perhitungan datetime, seperti, menambahkan interval ke tanggal dan stempel waktu, menjumlahkan interval, dan mengurangi interval dari tanggal atau stempel waktu. Literal interval dapat digunakan sebagai nilai masukan untuk kolom tipe data interval dalam tabel. 

## Sintaks tipe data interval
<a name="interval_data_types-syntax"></a>

Untuk menentukan tipe data interval untuk menyimpan durasi waktu dalam tahun dan bulan:

```
INTERVAL year_to_month_qualifier
```

Untuk menentukan tipe data interval untuk menyimpan durasi dalam hari, jam, menit, dan detik:

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

## Sintaks interval literal
<a name="interval_data_types-syntax-literal"></a>

Untuk menentukan interval literal untuk menentukan durasi waktu dalam tahun dan bulan:

```
INTERVAL quoted-string year_to_month_qualifier
```

Untuk menentukan interval literal untuk menentukan durasi dalam hari, jam, menit, dan detik:

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

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

 *string yang dikutip*   
Menentukan nilai numerik positif atau negatif menentukan kuantitas dan unit datetime sebagai string input. **Jika *string yang dikutip hanya berisi angka,* maka AWS Clean Rooms tentukan unit dari year\$1to\$1month\$1qualifier atau day\$1to\$1second\$1qualifier.** Misalnya, `'23' MONTH` mewakili`1 year 11 months`, `'-2' DAY` mewakili`-2 days 0 hours 0 minutes 0.0 seconds`, `'1-2' MONTH` mewakili`1 year 2 months`, dan `'13 day 1 hour 1 minute 1.123 seconds' SECOND` mewakili`13 days 1 hour 1 minute 1.123 seconds`. Untuk informasi selengkapnya tentang format keluaran suatu interval, lihat[Gaya interval](#interval_data_types-interval-styles).

 *year\$1to\$1month\$1qualifier*   
Menentukan rentang interval. Jika Anda menggunakan kualifikasi dan membuat interval dengan satuan waktu yang lebih kecil dari qualifier, AWS Clean Rooms potong dan buang bagian interval yang lebih kecil. Nilai yang valid untuk *year\$1to\$1month\$1qualifier* adalah:  
+ `YEAR`
+ `MONTH`
+ `YEAR TO MONTH`

 *day\$1to\$1second\$1qualifier*   
Menentukan rentang interval. Jika Anda menggunakan kualifikasi dan membuat interval dengan satuan waktu yang lebih kecil dari qualifier, AWS Clean Rooms potong dan buang bagian interval yang lebih kecil. Nilai yang valid untuk *day\$1to\$1second\$1qualifier* adalah:  
+ `DAY`
+ `HOUR`
+ `MINUTE`
+ `SECOND`
+ `DAY TO HOUR`
+ `DAY TO MINUTE`
+ `DAY TO SECOND`
+ `HOUR TO MINUTE`
+ `HOUR TO SECOND`
+ `MINUTE TO SECOND`
Output dari literal INTERVAL terpotong ke komponen INTERVAL terkecil yang ditentukan. Misalnya, saat menggunakan kualifikasi MINUTE, AWS Clean Rooms buang satuan waktu yang lebih kecil dari MINUTE.  

```
select INTERVAL '1 day 1 hour 1 minute 1.123 seconds' MINUTE
```
Nilai yang dihasilkan terpotong menjadi. `'1 day 01:01:00'`

 *fractional\$1precision*   
Parameter opsional yang menentukan jumlah digit fraksional yang diizinkan dalam interval. Argumen *fractional\$1precision* seharusnya hanya ditentukan jika interval Anda berisi SECOND. Misalnya, `SECOND(3)` buat interval yang memungkinkan hanya tiga digit pecahan, seperti 1,234 detik. Jumlah maksimum digit fraksional adalah enam.

Konfigurasi sesi `interval_forbid_composite_literals` menentukan apakah kesalahan dikembalikan ketika interval ditentukan dengan bagian YEAR TO MONTH dan DAY TO SECOND. 

## Aritmatika interval
<a name="interval_data_types-arithmetic"></a>

Anda dapat menggunakan nilai interval dengan nilai datetime lainnya untuk melakukan operasi aritmatika. Tabel berikut menjelaskan operasi yang tersedia dan jenis data apa yang dihasilkan dari setiap operasi. 

**catatan**  
 Operasi yang dapat menghasilkan keduanya `date` dan `timestamp` hasil melakukannya berdasarkan satuan waktu terkecil yang terlibat dalam persamaan. Misalnya, ketika Anda menambahkan `interval` ke hasilnya adalah `date` jika itu adalah interval TAHUN KE BULAN, dan stempel waktu jika itu adalah interval HARI KE KEDUA. `date` 

Operasi di mana operan pertama adalah `interval` menghasilkan hasil sebagai berikut untuk operan kedua yang diberikan:

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

Operasi di mana operan pertama adalah `date` menghasilkan hasil sebagai berikut untuk operan kedua yang diberikan:

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

Operasi di mana operan pertama adalah `timestamp` menghasilkan hasil sebagai berikut untuk operan kedua yang diberikan:

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

## Gaya interval
<a name="interval_data_types-interval-styles"></a>
+ `postgres`— mengikuti gaya PostgreSQL. Ini adalah opsi default.
+ `postgres_verbose`— mengikuti gaya verbose PostgreSQL.
+ `sql_standard`— mengikuti gaya literal interval standar SQL.

Perintah berikut menetapkan gaya interval ke`sql_standard`.

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

**format keluaran postgres**

Berikut ini adalah format output untuk gaya `postgres` interval. Setiap nilai numerik bisa negatif.

```
'<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
```

**format keluaran postgres\$1verbose**

sintaks postgres\$1verbose mirip dengan postgres, tetapi output postgres\$1verbose juga berisi satuan waktu.

```
'[@] <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
```

**format keluaran sql\$1standard**

Nilai interval tahun ke bulan diformat sebagai berikut. Menentukan tanda negatif sebelum interval menunjukkan interval adalah nilai negatif dan berlaku untuk seluruh interval.

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

Interval hari ke nilai kedua diformat sebagai berikut.

```
'[-]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
```

## Contoh tipe data interval
<a name="interval_data_types-examples"></a>

Contoh berikut menunjukkan bagaimana menggunakan tipe data INTERVAL dengan tabel.

```
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 
-----+-----
```

## Contoh literal interval
<a name="interval_data_types_literals-examples"></a>

Contoh berikut dijalankan dengan gaya interval diatur ke`postgres`.

Contoh berikut menunjukkan cara membuat INTERVAL literal 1 tahun.

```
select INTERVAL '1' YEAR 

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

Jika Anda menentukan *string yang dikutip* yang melebihi kualifikasi, satuan waktu yang tersisa dipotong dari interval. Dalam contoh berikut, interval 13 bulan menjadi 1 tahun dan 1 bulan, tetapi sisanya 1 bulan ditinggalkan karena kualifikasi YEAR.

```
select INTERVAL '13 months' YEAR

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

Jika Anda menggunakan qualifier yang lebih rendah dari string interval Anda, unit sisa disertakan.

```
select INTERVAL '13 months' MONTH

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

Menentukan presisi dalam interval Anda memotong jumlah digit pecahan ke presisi yang ditentukan.

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

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

Jika Anda tidak menentukan presisi, AWS Clean Rooms gunakan presisi maksimum 6.

```
select INTERVAL '1.23456789' SECOND

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

Contoh berikut menunjukkan cara membuat interval berkisar.

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

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

Kualifikasi mendikte unit yang Anda tentukan. Misalnya, meskipun contoh berikut menggunakan *string kutipan* yang sama dari '2:2' seperti contoh sebelumnya, AWS Clean Rooms mengakui bahwa ia menggunakan satuan waktu yang berbeda karena qualifier.

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

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

Singkatan dan bentuk jamak dari masing-masing unit juga didukung. Misalnya,, `5s``5 second`, dan `5 seconds` merupakan interval yang setara. Unit yang didukung adalah tahun, bulan, jam, menit, dan detik.

```
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
```

# Contoh literal interval tanpa sintaks qualifier
<a name="interval_literals_examples"></a>

**catatan**  
Contoh berikut menunjukkan menggunakan interval literal tanpa `YEAR TO MONTH` atau `DAY TO SECOND` kualifikasi. Untuk informasi tentang penggunaan literal interval yang direkomendasikan dengan kualifikasi, lihat[Tipe data interval dan literal](interval_data_types_spark.md).

Gunakan interval literal untuk mengidentifikasi periode waktu tertentu, seperti `12 hours` atau`6 months`. Anda dapat menggunakan literal interval ini dalam kondisi dan perhitungan yang melibatkan ekspresi datetime. 

 Interval literal dinyatakan sebagai kombinasi kata kunci INTERVAL dengan kuantitas numerik dan bagian tanggal yang didukung, misalnya `INTERVAL '7 days'` atau`INTERVAL '59 minutes'`. Anda dapat menghubungkan beberapa kuantitas dan unit untuk membentuk interval yang lebih tepat, misalnya:`INTERVAL '7 days, 3 hours, 59 minutes'`. Singkatan dan bentuk jamak dari setiap unit juga didukung; misalnya:`5 s`,`5 second`, dan `5 seconds` merupakan interval yang setara.

Jika Anda tidak menentukan bagian tanggal, nilai interval mewakili detik. Anda dapat menentukan nilai kuantitas sebagai pecahan (misalnya:`0.5 days`).

Contoh berikut menunjukkan serangkaian perhitungan dengan nilai interval yang berbeda.

Berikut ini menambahkan 1 detik ke tanggal yang ditentukan.

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

Berikut ini menambahkan 1 menit ke tanggal yang ditentukan.

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

Berikut ini menambahkan 3 jam dan 35 menit ke tanggal yang ditentukan.

```
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)
```

Berikut ini menambahkan 52 minggu ke tanggal yang ditentukan.

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

Berikut ini menambahkan 1 minggu, 1 jam, 1 menit, dan 1 detik ke tanggal yang ditentukan.

```
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)
```

Berikut ini menambahkan 12 jam (setengah hari) ke tanggal yang ditentukan.

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

Berikut ini mengurangi 4 bulan dari 15 Februari 2023 dan hasilnya adalah 15 Oktober 2022.

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

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

Berikut ini mengurangi 4 bulan dari 31 Maret 2023 dan hasilnya adalah 30 November 2022. Perhitungan mempertimbangkan jumlah hari dalam sebulan.

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

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