Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

DATEADD() Contoh di SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server JIKA TIDAK ADA Penggunaan?

  2. Pemicu SQL Server – Bagian 2 Pemicu DDL &LOGON

  3. Kesalahan SSMS 2016 Mengimpor Azure SQL v12 bacpac:kunci master tanpa kata sandi tidak didukung

  4. 3 Cara Mendapatkan Skema Hasil yang Ditetapkan di SQL Server

  5. Indeks Hilang SQL Server