Di SQL Server, Anda dapat menggunakan DATEADD()
berfungsi untuk menambahkan periode waktu tertentu ke tanggal tertentu. Anda juga dapat menggunakannya untuk mengurangi jangka waktu tertentu.
Anda juga dapat menggabungkan DATEADD()
dengan fungsi lain untuk memformat tanggal sesuai kebutuhan. Misalnya, Anda dapat mengambil '2020-10-03', tambahkan 10 tahun, lalu kembalikan komponen tahun (ditambah).
Artikel ini berisi contoh untuk ditunjukkan.
Sintaks
Sintaks DATEADD()
seperti ini:
DATEADD (datepart , number , date )
Dimana datepart
adalah bagian dari tanggal yang ingin ditambah (atau dikurangi), number
adalah jumlah peningkatan datepart
oleh, dan date
adalah tanggal penambahan akan dilakukan.
Contoh 1
Berikut adalah contoh dasar untuk menambahkan sepuluh tahun ke sebuah tanggal:
PILIH TANGGAL(tahun, 10, '2020-10-03') SEBAGAI 'Tanggal Mendatang';
Hasil:
+-------------------------+| Tanggal Mendatang ||-------------------------|| 2030-10-03 00:00:00.000 |+------------------------+
Dalam hal ini, nilai kembalian mencakup komponen waktu dan juga tanggal. Ini karena hasilnya dikembalikan sebagai datetime nilai. Alasan dikembalikan sebagai tipe data ini karena kami menyediakan string literal sebagai date
argumen. Saat Anda memberikan string literal sebagai tanggal, DATEADD()
mengembalikan waktu tanggal nilai.
Jika Anda tidak menyediakan literal string, nilai yang dikembalikan sama dengan tipe data date
argumen. Misalnya, jika Anda memberikan datetime2 argumen, nilai yang dikembalikan akan menjadi datetime2 .
Contoh 2 – Memformat Hasil
Kita dapat mengambil hasil di atas dan memformatnya dengan FORMAT()
fungsi:
SELECT FORMAT(DATEADD(year, 10, '2020-10-03'), 'yyyy-MM-dd') AS 'yyyy-MM-dd', FORMAT(DATEADD(year, 10, '2020-10 -03'), 'dd/MM/yyyy') AS 'dd/MM/yyyy', FORMAT(DATEADD(year, 10, '2020-10-03'), 'yyyy') AS 'yyyy', FORMAT( TANGGAL(tahun, 10, '2020-10-03'), 'yy') SEBAGAI 'yy';
Hasil:
+-------------+--------------+--------+------+ | yyyy-MM-dd | hh/MM/tttt | yyy | yy ||--------------+--------------+--------+------|| 2030-10-03 | 03/10/2030 | 2030 | 30 |+--------------+--------------+--------+------+Namun penting untuk diperhatikan bahwa
FORMAT()
fungsi mengembalikan hasilnya sebagai string.Opsi lainnya adalah menggunakan
CONVERT()
untuk mengonversi hasil menjadi tanggal tipe data:SELECT CONVERT(tanggal, TANGGAL(tahun, 10, '2020-10-03')) SEBAGAI Dikonversi;Hasil:
+-------------+| Dikonversi ||-------------|| 2030-10-03 |+-------------+Atau Anda dapat menggunakan fungsi seperti
YEAR()
, yang mengembalikan hasilnya sebagai bilangan bulat:PILIH TAHUN(DATEADD(tahun, 10, '2020-10-03')) SEBAGAI 'Tahun Mendatang';Hasil:
+---------------+| Tahun Depan ||---------------|| 2030 |+---------------+Contoh 3 – Pengurangan Tanggal
Anda dapat menggunakan angka negatif untuk mengurangi tanggal:
PILIH TANGGAL(tahun, -10, '2020-10-03') SEBAGAI 'Tanggal Lebih Awal';Hasil:
+-------------------------+| Tanggal Sebelumnya ||--------------|| 2010-10-03 00:00:00.000 |+------------------------+Dan tentu saja, Anda dapat memformatnya menggunakan salah satu metode yang disebutkan sebelumnya.
Contoh 4 – Tanggal Sistem
Berikut adalah beberapa contoh penggunaan berbagai fungsi untuk mengembalikan tanggal/waktu saat ini dari komputer yang menjalankan instance SQL Server.
SYSDATETIME()
SELECT SYSDATETIME() AS 'Current Date', DATEADD(year, 10, SYSDATETIME()) AS 'Future Date';Hasil:
+-----------------------------+---------------- -------------+| Tanggal Sekarang | Tanggal Mendatang ||-----------------------------+---------------- -------------|| 06-04 2018 05:57:51.7297042 | 2028-06-04 05:57:51.7297042 |+------------------------------+-------- ---------------------+SYSDATETIMEOFFSET()
SELECT SYSDATETIME() AS 'Current Date', DATEADD(year, 10, SYSDATETIME()) AS 'Future Date';Hasil:
+--------------------------+------------------- -------+| Tanggal Sekarang | Tanggal Mendatang ||--------------------------+------------------- -------|| 18/4/06 6:02:07 +00:00 | 28/4 6:02:07 +00:00 |+--------------------------+------ --------------------+Seperti disebutkan, hasil ini dikembalikan menggunakan tipe data
date
argumen (karena bukan literal string).Memformat Keluaran
SELECT YEAR(SYSDATETIME()) AS 'Current Year', YEAR(DATEADD(year, 10, SYSDATETIME())) AS 'Future Year';Hasil:
+----------------+---------------+| Tahun Berjalan | Tahun Depan ||----------------+---------------|| 2018 | 2028 |+----------------+---------------+Dan seperti yang juga disebutkan, jika Anda memformat tanggal, itu akan dikembalikan dalam tipe data untuk fungsi yang berlaku. Jadi dalam contoh ini, hasilnya dikembalikan sebagai int . Jika kita memformatnya dengan
FORMAT()
fungsi, itu akan dikembalikan sebagai string.